login

<     >

2023-07-22 14:46:53 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

add invites to DB

diff --git a/data.lua b/data.lua
index 0e0fea4..86ce973 100644
--- a/data.lua
+++ b/data.lua
@@ -8,6 +8,10 @@ CREATE TABLE IF NOT EXISTS User (
     salt TEXT,
     hash TEXT
 );
+CREATE TABLE IF NOT EXISTS Invite (
+    uuid TEXT PRIMARY KEY,
+    expire INTEGER NOT NULL
+);
 CREATE TABLE IF NOT EXISTS Project (
     id INTEGER PRIMARY KEY AUTOINCREMENT,
     name TEXT NOT NULL UNIQUE,
@@ -93,6 +97,26 @@ function Model:create_user(nick, name, salt, hash)
     self.db:execute(query, nick, name, salt, hash)
 end
 
+function Model:create_invite()
+    local uuid = lud.crypt.uuid4()
+    local expire = "unixepoch('now', '+2 days')"
+    self.db:execute("INSERT INTO Invite(uuid, expire) VALUES (?, "..expire..");", uuid)
+    return uuid
+end
+
+function Model:expire_invites()
+    self.db:execute("DELETE FROM Invite WHERE expire < unixepoch();")
+end
+
+function Model:use_invite(uuid)
+    self:expire_invites()
+    local inv = self.db:execute("SELECT * FROM Invite WHERE uuid = ?;", uuid)[1]
+    if inv ~= nil then
+        self.db:execute("DELETE FROM Invite WHERE uuid = ?;", uuid)
+    end
+    return inv ~= nil
+end
+
 function Model:create_project(user_id, name, desc)
     self.db:execute("INSERT INTO Project(name, desc) VALUES (?, ?);", name, desc)
     local proj_id = self.db:execute("SELECT id FROM Project WHERE name = ?;", name)[1].id