login

<     >

2023-07-22 13:06:29 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

add basic DB create functions

diff --git a/data.lua b/data.lua
index 3f496bb..0e0fea4 100644
--- a/data.lua
+++ b/data.lua
@@ -29,7 +29,7 @@ CREATE TABLE IF NOT EXISTS Ticket (
     state_id INTEGER NOT NULL REFERENCES State(id),
     time INTEGER NOT NULL,
     code INTEGER NOT NULL,
-    name TEXT NOT NULL,
+    title TEXT NOT NULL,
     desc TEXT
 );
 CREATE TABLE IF NOT EXISTS Shift (
@@ -88,6 +88,55 @@ function Model:get_comments(ticket_id)
     return self.db:execute("SELECT * FROM Comment WHERE ticket_id = ?;", ticket_id)
 end
 
+function Model:create_user(nick, name, salt, hash)
+    local query = "INSERT INTO User(nick, name, salt, hash) VALUES (?, ?, ?, ?);"
+    self.db:execute(query, nick, name, salt, hash)
+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
+    self.db:execute("INSERT INTO Membership(proj_id, user_id) VALUES (?, ?);", proj_id, user_id)
+    return proj_id
+end
+
+-- generate new ticket code for a given project
+function Model:get_next_code(proj_id)
+    local query = "SELECT code FROM Ticket WHERE proj_id = ? ORDER BY code DESC LIMIT 1;"
+    local last_ticket = self.db:execute(query, proj_id)[1]
+    local last_code
+    if last_ticket == nil then
+        last_code = 0
+    else
+        last_code = last_ticket.code
+    end
+    return last_code + 1
+end
+
+function Model:create_ticket(user_id, proj_id, title, desc)
+    local code = self:get_next_code(proj_id)
+    self.db:execute([[
+        INSERT INTO Ticket(proj_id, user_id, state_id, time, code, title, desc)
+        VALUES (?, ?, 1, unixepoch(), ?, ?, ?);
+    ]], proj_id, user_id, code, title, desc)
+    return code
+end
+
+function Model:shift_ticket(user_id, ticket, state_id)
+    self.db:execute([[
+        INSERT INTO Shift(ticket_id, old_stt_id, new_stt_id, user_id, time)
+        VALUES (?, ?, ?, ?, unixepoch());
+    ]], ticket.id, ticket.state_id, state_id, user_id)
+    self.db:execute("UPDATE Ticket SET state_id = ? WHERE id = ?;", state_id, ticket.id)
+end
+
+function Model:add_comment(user_id, ticket_id, text)
+    self.db:execute[[
+        INSERT INTO Comment(ticket_id, user_id, time, text)
+        VALUES (?, ?, unixepoch(), ?);
+    ]], ticket_id, user_id, text)
+end
+
 function Model:close()
     self.db:close()
 end