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