Milestone - core reports working
This commit is contained in:
@@ -7,6 +7,7 @@ from routers.prefixes import prefix_router
|
||||
from routers.tickets import ticket_router
|
||||
from routers.baskets import basket_router
|
||||
from routers.combined import combined_router
|
||||
from routers.reports import report_router
|
||||
|
||||
if argv[1] == "run":
|
||||
app = FastAPI(title="TAM3 API Server", docs_url=None, redoc_url=None)
|
||||
@@ -16,4 +17,5 @@ else:
|
||||
app.include_router(prefix_router)
|
||||
app.include_router(ticket_router)
|
||||
app.include_router(basket_router)
|
||||
app.include_router(combined_router)
|
||||
app.include_router(combined_router)
|
||||
app.include_router(report_router)
|
||||
22
api/repos/reports.py
Normal file
22
api/repos/reports.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from dataclasses import dataclass
|
||||
from .template import Repo
|
||||
|
||||
@dataclass
|
||||
class ReportItem:
|
||||
prefix: str
|
||||
winner_name: str
|
||||
phone_number: str | None
|
||||
preference: str
|
||||
b_id: int
|
||||
winning_ticket: int
|
||||
description: str
|
||||
|
||||
class ReportRepo(Repo):
|
||||
def get_byname(self, prefix: str) -> list[ReportItem]:
|
||||
self.cur.execute("SELECT * FROM report WHERE prefix = %s", (prefix,))
|
||||
results = self.cur.fetchall()
|
||||
return [ReportItem(*r) for r in results]
|
||||
def get_bybasket(self, prefix: str) -> list[ReportItem]:
|
||||
self.cur.execute("SELECT * FROM report WHERE prefix = %s ORDER BY b_id ASC", (prefix,))
|
||||
results = self.cur.fetchall()
|
||||
return [ReportItem(*r) for r in results]
|
||||
18
api/routers/reports.py
Normal file
18
api/routers/reports.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from fastapi import APIRouter
|
||||
from repos.reports import ReportItem, ReportRepo
|
||||
from repos.api_keys import ApiKeyRepo
|
||||
from exceptions import bad_key
|
||||
|
||||
report_router = APIRouter(prefix="/api/reports")
|
||||
|
||||
@report_router.get("/byname/{prefix}/")
|
||||
def get_report_byname(api_key: str, prefix: str):
|
||||
if not ApiKeyRepo().check_api(api_key):
|
||||
raise bad_key
|
||||
return ReportRepo().get_byname(prefix)
|
||||
|
||||
@report_router.get("/bybasket/{prefix}/")
|
||||
def get_report_bybasket(api_key: str, prefix: str):
|
||||
if not ApiKeyRepo().check_api(api_key):
|
||||
raise bad_key
|
||||
return ReportRepo().get_bybasket(prefix)
|
||||
Reference in New Issue
Block a user