(add): Sheets, Ticket Search

This commit is contained in:
2026-07-08 20:22:59 -04:00
parent cdbac0e69a
commit 76040c1f91
23 changed files with 735 additions and 179 deletions
+37
View File
@@ -0,0 +1,37 @@
from fastapi import APIRouter, Header
from .tickets import Ticket
from db import RepoTemplate
from system.auth import AuthRepo
chunk_size = 300
def wild_enc(str_in: str):
return f"%{str_in}%"
class SearchRepo(RepoTemplate):
def ticket_search(self, first_name: str, last_name: str, phone_number: str):
self.cur.execute("SELECT * FROM tickets WHERE first_name LIKE ? AND last_name LIKE ? AND phone_number LIKE ? ORDER BY prefix, t_id", (wild_enc(first_name), wild_enc(last_name), wild_enc(phone_number)))
results = self.cur.fetchall()
return [Ticket(*r) for r in results]
def post_tickets(self, ts: list[Ticket]):
for i in range(0, len(ts), chunk_size):
chunk = ts[i:i+chunk_size]
for t in chunk:
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
search_router = APIRouter(prefix="/api/search")
@search_router.get("/tickets")
def search_tickets(first_name: str = "", last_name: str = "", phone_number: str = "", tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return SearchRepo().ticket_search(first_name, last_name, phone_number)
@search_router.post("/tickets")
def post_tickets(ts: list[Ticket], tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return SearchRepo().post_tickets(ts)