2023-08-02 10:39:17 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
reorder methods in data module
diff --git a/data.lua b/data.lua index fed1304..ae0c245 100644 --- a/data.lua +++ b/data.lua @@ -88,35 +88,10 @@ function Model:create_states() ]] end -function Model:get_user(nick) - return self.db:execute("SELECT * FROM User WHERE nick = ?;", nick)[1] -end - -function Model:get_project(name) - return self.db:execute("SELECT * FROM Project WHERE name = ?;", name)[1] -end - -function Model:get_user_projects(user_id) - return self.db:execute([[ - SELECT * FROM Project JOIN Membership ON Project.id = Membership.proj_id - WHERE Membership.user_id = ?; - ]], user_id) -end - function Model:get_states() return self.db:execute("SELECT * FROM State;") end -function Model:get_tickets(proj_id, state_id) - -- TODO: limit "done" tickets by age - local query = "SELECT * FROM Ticket WHERE proj_id = ? AND state_id = ?;" - return self.db:execute(query, proj_id, state_id) -end - -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, password) local salt = auth.get_salt() local hash = auth.hash_pass(password, salt) @@ -126,6 +101,10 @@ function Model:create_user(nick, name, password) self.db:execute(query, nick, name, salt, hash) end +function Model:get_user(nick) + return self.db:execute("SELECT * FROM User WHERE nick = ?;", nick)[1] +end + function Model:create_invite(user_id) local uuid = auth.hex(auth.uuid4()) local expire = "unixepoch('now', '+2 days')" @@ -138,10 +117,6 @@ function Model:get_invites(user_id) return self.db:execute("SELECT * FROM Invite WHERE user_id = ?;", user_id) end -function Model:del_invite(user_id, uuid) - self.db:execute("DELETE FROM Invite WHERE user_id = ? AND uuid = ?;", user_id, uuid) -end - function Model:expire_invites() self.db:execute("DELETE FROM Invite WHERE expire < unixepoch();") end @@ -155,6 +130,10 @@ function Model:use_invite(uuid) return inv ~= nil end +function Model:del_invite(user_id, uuid) + self.db:execute("DELETE FROM Invite WHERE user_id = ? AND uuid = ?;", user_id, uuid) +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 @@ -162,6 +141,24 @@ function Model:create_project(user_id, name, desc) return proj_id end +function Model:get_project(name) + return self.db:execute("SELECT * FROM Project WHERE name = ?;", name)[1] +end + +function Model:get_user_projects(user_id) + return self.db:execute([[ + SELECT * FROM Project JOIN Membership ON Project.id = Membership.proj_id + WHERE Membership.user_id = ?; + ]], user_id) +end + +function Model:del_project(proj_id) + self.db:execute("DELETE FROM Membership WHERE proj_id = ?;", proj_id) + self.db:execute("DELETE FROM Ticket WHERE proj_id = ?;", proj_id) + -- TODO: delete associated comments and shifts + self.db:execute("DELETE FROM Project WHERE id = ?;", 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;" @@ -184,6 +181,12 @@ function Model:create_ticket(user_id, proj_id, title, desc) return code end +function Model:get_tickets(proj_id, state_id) + -- TODO: limit "done" tickets by age + local query = "SELECT * FROM Ticket WHERE proj_id = ? AND state_id = ?;" + return self.db:execute(query, proj_id, state_id) +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) @@ -199,11 +202,8 @@ function Model:add_comment(user_id, ticket_id, text) ]], ticket_id, user_id, text) end -function Model:del_project(proj_id) - self.db:execute("DELETE FROM Membership WHERE proj_id = ?;", proj_id) - self.db:execute("DELETE FROM Ticket WHERE proj_id = ?;", proj_id) - -- TODO: delete associated comments and shifts - self.db:execute("DELETE FROM Project WHERE id = ?;", proj_id) +function Model:get_comments(ticket_id) + return self.db:execute("SELECT * FROM Comment WHERE ticket_id = ?;", ticket_id) end -- return a list of columns ordered by state ID