Files
tam3/api/repos/tickets.py

40 lines
1.6 KiB
Python
Raw Normal View History

2025-09-23 22:20:53 -04:00
from dataclasses import dataclass
from .template import Repo
@dataclass
class Ticket:
prefix: str
t_id: int
first_name: str = ""
last_name: str = ""
phone_number: str = ""
preference: str = "CALL"
changed: bool = False
class TicketRepo(Repo):
def get_prefix_one(self, prefix: str, t_id: int):
self.cur.execute("SELECT * FROM tickets WHERE prefix = %s AND t_id = %s", (prefix, t_id))
result = self.cur.fetchone()
if not result:
return Ticket(prefix=prefix, t_id=t_id)
return Ticket(*result)
def get_prefix_range(self, prefix: str, t_from: int, t_to: int):
r_dict = {i: Ticket(prefix=prefix, t_id=i) for i in range(t_from, t_to+1)}
self.cur.execute("SELECT * FROM tickets WHERE prefix = %s AND t_id BETWEEN %s AND %s", (prefix, t_from, t_to))
results = self.cur.fetchall()
for r in results:
r_dict[r[1]] = Ticket(*r)
return list(r_dict.values())
def get_prefix_all(self, prefix: str):
self.cur.execute("SELECT * FROM tickets WHERE prefix = %s", (prefix,))
results = self.cur.fetchall()
return [Ticket(*r) for r in results]
def get_all(self):
self.cur.execute("SELECT * FROM tickets")
results = self.cur.fetchall()
return [Ticket(*r) for r in results]
def post_list(self, tickets: list[Ticket]):
for t in tickets:
self.cur.execute("REPLACE INTO tickets VALUES (%s, %s, %s, %s, %s, %s)", (t.prefix, t.t_id, t.first_name, t.last_name, t.phone_number, t.preference))
self.conn.commit()
return {"detail": "Tickets posted successfully."}