(add): Tickets Logic
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,65 @@
|
||||
from dataclasses import dataclass
|
||||
from db import RepoTemplate
|
||||
from system.auth import AuthRepo
|
||||
from fastapi import APIRouter, Header
|
||||
|
||||
@dataclass
|
||||
class Ticket:
|
||||
prefix: str
|
||||
t_id: int
|
||||
first_name: str = ""
|
||||
last_name: str = ""
|
||||
phone_number: str = ""
|
||||
pref: str = ""
|
||||
|
||||
class TicketRepo(RepoTemplate):
|
||||
def get_all_tickets(self):
|
||||
self.cur.execute("SELECT * FROM tickets ORDER BY prefix, t_id")
|
||||
results = self.cur.fetchall()
|
||||
return [Ticket(*r) for r in results]
|
||||
def get_prefix_tickets(self, prefix: str):
|
||||
self.cur.execute("SELECT * FROM tickets WHERE prefix = ? ORDER BY prefix, t_id", (prefix,))
|
||||
results = self.cur.fetchall()
|
||||
return [Ticket(*r) for r in results]
|
||||
def get_single_ticket(self, prefix: str, id: int):
|
||||
self.cur.execute("SELECT * FROM tickets WHERE prefix = ? AND t_id = ? ORDER BY prefix, t_id", (prefix, id))
|
||||
results = self.cur.fetchall()
|
||||
return [Ticket(*r) for r in results]
|
||||
def get_range_tickets(self, prefix: str, id_from: int, id_to: int):
|
||||
self.cur.execute("SELECT * FROM tickets WHERE prefix = ? AND t_id BETWEEN ? AND ? ORDER BY prefix, t_id", (prefix, id_from, id_to))
|
||||
results = self.cur.fetchall()
|
||||
return [Ticket(*r) for r in results]
|
||||
def post_tickets(self, ts: list[Ticket]):
|
||||
for t in ts:
|
||||
self.cur.execute("""INSERT INTO tickets VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT (prefix, t_id) DO UPDATE SET
|
||||
first_name = EXCLUDED.first_name, last_name = EXCLUDED.last_name, phone_number = EXCLUDED.phone_number,
|
||||
pref = EXCLUDED.pref""", (t.prefix, t.t_id, t.first_name, t.last_name, t.phone_number, t.pref))
|
||||
self.conn.commit()
|
||||
return ts
|
||||
|
||||
tickets_router = APIRouter(prefix="/api/tickets")
|
||||
|
||||
@tickets_router.get("")
|
||||
def get_all_tickets(tam_key: str = Header("")):
|
||||
AuthRepo().verify_key(tam_key)
|
||||
return TicketRepo().get_all_tickets()
|
||||
|
||||
@tickets_router.get("/{prefix}")
|
||||
def get_prefix_tickets(prefix: str, tam_key: str = Header("")):
|
||||
AuthRepo().verify_key(tam_key)
|
||||
return TicketRepo().get_prefix_tickets(prefix)
|
||||
|
||||
@tickets_router.get("/{prefix}/{t_id}")
|
||||
def get_single_ticket(prefix: str, t_id: int, tam_key: str = Header("")):
|
||||
AuthRepo().verify_key(tam_key)
|
||||
return TicketRepo().get_single_ticket(prefix, t_id)
|
||||
|
||||
@tickets_router.get("/{prefix}/{id_from}/{id_to}")
|
||||
def get_range_tickets(prefix: str, id_from: int, id_to: int, tam_key: str = Header("")):
|
||||
AuthRepo().verify_key(tam_key)
|
||||
return TicketRepo().get_range_tickets(prefix, id_from, id_to)
|
||||
|
||||
@tickets_router.post("")
|
||||
def post_tickets(ts: list[Ticket], tam_key: str = Header("")):
|
||||
AuthRepo().verify_key(tam_key)
|
||||
return TicketRepo().post_tickets(ts)
|
||||
Reference in New Issue
Block a user