(add): Remote API endpoints for ticket search
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
from fastapi import FastAPI
|
||||
from sys import argv
|
||||
from exceptions import bad_key
|
||||
|
||||
from repos.api_keys import ApiKeyRepo
|
||||
|
||||
@@ -13,6 +12,7 @@ from routers.combined import combined_router
|
||||
from routers.reports import report_router
|
||||
from routers.backuprestore import backup_router
|
||||
from routers.counts import counts_router
|
||||
from routers.search import search_router
|
||||
|
||||
if argv[1] == "run":
|
||||
app = FastAPI(title="TAM3 API Server", docs_url=None, redoc_url=None)
|
||||
@@ -31,4 +31,5 @@ app.include_router(basket_router)
|
||||
app.include_router(combined_router)
|
||||
app.include_router(report_router)
|
||||
app.include_router(backup_router)
|
||||
app.include_router(counts_router)
|
||||
app.include_router(counts_router)
|
||||
app.include_router(search_router)
|
||||
|
||||
16
api/repos/search.py
Normal file
16
api/repos/search.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from .template import Repo
|
||||
from .tickets import Ticket
|
||||
|
||||
|
||||
class SearchRepo(Repo):
|
||||
def SearchTickets(
|
||||
self, first_name: str = "", last_name: str = "", phone_number: str = ""
|
||||
):
|
||||
self.cur.execute(
|
||||
'SELECT * FROM tickets WHERE first_name LIKE %s AND last_name LIKE %s AND phone_number LIKE %s',
|
||||
(f"%{first_name}%", f"%{last_name}%", f"%{phone_number}%"),
|
||||
)
|
||||
records = self.cur.fetchall()
|
||||
if not records:
|
||||
return []
|
||||
return [Ticket(*r) for r in records]
|
||||
17
api/routers/search.py
Normal file
17
api/routers/search.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from exceptions import bad_key
|
||||
from fastapi import APIRouter
|
||||
from repos.api_keys import ApiKeyRepo
|
||||
from repos.search import SearchRepo
|
||||
|
||||
search_router = APIRouter(prefix="/api/search")
|
||||
|
||||
|
||||
@search_router.get("/tickets/")
|
||||
def search_tickets(
|
||||
api_key: str, first_name: str = "", last_name: str = "", phone_number: str = ""
|
||||
):
|
||||
if not ApiKeyRepo().check_api(api_key):
|
||||
raise bad_key
|
||||
return SearchRepo().SearchTickets(
|
||||
first_name=first_name, last_name=last_name, phone_number=phone_number
|
||||
)
|
||||
Reference in New Issue
Block a user