commit e9a1fdf9dbe639267bc352c8b5a67935f1008668
parent df96999fba9553b6c85770754ad14a11ed30fdeb
Author: Juan F. Meleiro <juan@juanmeleiro.mat.br>
Date: Fri, 8 Sep 2023 12:48:46 -0300
Move registration logic to lib
Diffstat:
2 files changed, 39 insertions(+), 24 deletions(-)
diff --git a/lib/registration.lua b/lib/registration.lua
@@ -39,7 +39,39 @@ function _M.deregister(args, players, log)
end
function _M.register(args, players, log, ts)
- return
+ local exists = nil
+ -- Check if player name exists
+ for p, h in pairs(players) do
+ if table.query(h, function (x) return x.name == args.name end) then
+ if table.query(h, function (x) return x.reason == "s" end) then
+ die(string.format("Error: player '%s' exists and is registered.", p))
+ else
+ exists = p
+ break
+ end
+ end
+ end
+ if exists then
+ if yn(string.format("Player exists under name '%s'. Proceed? [yn] ", exists)) and not args.p then
+ players[args.name] = players[exists]
+ players[exists] = nil
+ end
+ else
+ players[args.name] = {}
+ end
+ local reg = {
+ name = args.name,
+ registration = os.date("%Y-%m-%d", args.date),
+ active = true,
+ reason = "s",
+ contact = args.contact,
+ latest = os.date("%Y-%m-%d", args.date)
+ }
+ if not args.p then
+ table.insert(players[args.name], reg)
+ else
+ io.write(pprint.pprint(reg))
+ end
end
return _M
diff --git a/registrar b/registrar
@@ -25,7 +25,11 @@ deregister_cmd:argument("date", "Time stamp of deregistration (seconds after epo
:convert(tonumber)
deregister_cmd:option("-m", "Message ID of deregistration (without 'message://' prefix)")
-parser:command("register", "Register player")
+local register_cmd = parser:command("register", "Register player")
+register_cmd:argument("name", "The name of the player")
+register_cmd:argument("date", "Time stamp of registration (seconds after epoch)")
+register_cmd:option("-m", "Message ID of registration (without 'message://' prefix)")
+
parser:command("activate", "Activate player")
parser:command("deactivate", "Deactivate player")
parser:command("rename", "Rename player")
@@ -44,8 +48,6 @@ local log = decodewith(json.decode, fns.log)
-- Process
--- commands[args.command](fns, args, players, log)
-
if args.command == "monthly" then
local hist = io.open(fns.history, "w")
@@ -125,26 +127,7 @@ elseif args.command == "birthday" then
io.write("Birthdays not implemented. Use registrar.fish\n")
elseif args.command == "register" then
- local exists = false
- -- Check if player name exists
- for p, h in pairs(players) do
- for _,e in ipairs(h) do
- if e.name == args.name then
- exists = true
- break
- end
- end
- end
- -- If not, register
- players[args.name] = players[args.name] or {}
- table.insert(players[args.name], {{
- name = args.name,
- registration = args.date,
- active = true,
- reason = "s",
- contact = args.contact
- }})
-
+ registration.register(args, players, log)
elseif args.command == "deregister" then
registration.deregister(args, players, log)
else