diff options
author | metamuffin <metamuffin@disroot.org> | 2024-10-30 02:11:09 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-10-30 02:11:09 +0100 |
commit | 585dd5ac36727b8d680a419f8541a36cfba84c65 (patch) | |
tree | 8590c09f4715e7283350a7a52228bcee11ee5ba1 | |
parent | 6e0afc292b908005788e7580a1cae1ffc35268a8 (diff) | |
download | abrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar abrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar.bz2 abrechenbarkeit-585dd5ac36727b8d680a419f8541a36cfba84c65.tar.zst |
things
-rwxr-xr-x | strichliste.lua | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/strichliste.lua b/strichliste.lua index 6ad7d5f..959cc87 100755 --- a/strichliste.lua +++ b/strichliste.lua @@ -2,6 +2,7 @@ local path = os.getenv("PATH_INFO") local method = os.getenv("REQUEST_METHOD") +local query = os.getenv("QUERY_STRING") local function escape(s) return s:gsub("<", "<"):gsub("<", "<") @@ -53,10 +54,34 @@ local function read_log() end end +local function balances() + local users = {} + for _, username, amount, _ in read_log() do + users[username] = (users[username] or 0) + amount + end + return users +end + if path == "/" then - print("Status: 200 OK") - print("Content-Type: text/plain") - print("") + if query == "?log" then + return respond(200, "Log", function() + print("<table>") + print("<tr><th>Time</th><th>Username</th><th>Amount</th><th>Comment</th></tr>") + for time, username, amount, comment in read_log() do + print(string.format("<tr><td>%d</td><td>%s</td><td>%.02f€</td><td>%s</td></tr>", time, escape(username), + amount / 100, escape(comment))) + end + print("</table>") + end) + end + return respond(200, "Users", function() + print("<ul>") + for username, balance in balances() do + print(string.format("<li><a href=\"/%s\">%s</a>: %.02f€</li>", escape(username), escape(username), + balance / 100)) + end + print("</ul>") + end) elseif path ~= nil then local username = path:sub(2) if username:match("^[%w_-]+$") == nil then |