nightly - 2025-09-27
This commit is contained in:
@@ -8,6 +8,7 @@ from routers.tickets import ticket_router
|
||||
from routers.baskets import basket_router
|
||||
from routers.combined import combined_router
|
||||
from routers.reports import report_router
|
||||
from routers.backuprestore import backup_router
|
||||
|
||||
if argv[1] == "run":
|
||||
app = FastAPI(title="TAM3 API Server", docs_url=None, redoc_url=None)
|
||||
@@ -18,4 +19,5 @@ app.include_router(prefix_router)
|
||||
app.include_router(ticket_router)
|
||||
app.include_router(basket_router)
|
||||
app.include_router(combined_router)
|
||||
app.include_router(report_router)
|
||||
app.include_router(report_router)
|
||||
app.include_router(backup_router)
|
||||
@@ -26,12 +26,16 @@ class PrefixRepo(Repo):
|
||||
return Prefix(*result)
|
||||
|
||||
def add_one(self, prefix: Prefix) -> str:
|
||||
self.cur.execute(
|
||||
"REPLACE INTO prefixes VALUES (%s, %s, %s)",
|
||||
(prefix.name, prefix.color, prefix.weight),
|
||||
)
|
||||
self.cur.execute("REPLACE INTO prefixes VALUES (%s, %s, %s)", (prefix.name, prefix.color, prefix.weight))
|
||||
self.conn.commit()
|
||||
return "Prefix inserted successfully."
|
||||
|
||||
def add_list(self, prefix_list: list[Prefix]):
|
||||
for prefix in prefix_list:
|
||||
self.cur.execute("REPLACE INTO prefixes VALUES (%s, %s, %s)", (prefix.name, prefix.color, prefix.weight))
|
||||
self.conn.commit()
|
||||
return "Prefixes inserted successfully."
|
||||
|
||||
|
||||
def del_one(self, prefix_name: str) -> str:
|
||||
self.cur.execute("DELETE FROM prefixes WHERE name = %s", (prefix_name,))
|
||||
|
||||
40
api/routers/backuprestore.py
Normal file
40
api/routers/backuprestore.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from fastapi import APIRouter, Body
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List
|
||||
from exceptions import bad_key
|
||||
|
||||
from repos.api_keys import ApiKeyRepo
|
||||
from repos.prefixes import Prefix, PrefixRepo
|
||||
from repos.tickets import Ticket, TicketRepo
|
||||
from repos.baskets import Basket, BasketRepo
|
||||
from repos.template import Repo
|
||||
|
||||
@dataclass
|
||||
class BackupFile:
|
||||
prefixes: List[Prefix] = field(default_factory=list)
|
||||
tickets: List[Ticket] = field(default_factory=list)
|
||||
baskets: List[Basket] = field(default_factory=list)
|
||||
|
||||
class BackupFileRepo:
|
||||
def get_file(self):
|
||||
new_file = BackupFile(prefixes=PrefixRepo().get_all(), tickets=TicketRepo().get_all(), baskets=BasketRepo().get_all())
|
||||
return new_file
|
||||
def post_file(self, uploaded_file: BackupFile) -> str:
|
||||
PrefixRepo().add_list(uploaded_file.prefixes)
|
||||
TicketRepo().post_list(uploaded_file.tickets)
|
||||
BasketRepo().post_list(uploaded_file.baskets)
|
||||
return "File posted successfully."
|
||||
|
||||
backup_router = APIRouter(prefix="/api/backuprestore")
|
||||
|
||||
@backup_router.get("/")
|
||||
def get_backup_file(api_key: str):
|
||||
if not ApiKeyRepo().check_api(api_key):
|
||||
raise bad_key
|
||||
return BackupFileRepo().get_file()
|
||||
|
||||
@backup_router.post("/")
|
||||
def post_backup_file(api_key: str, uploaded_file: BackupFile):
|
||||
if not ApiKeyRepo().check_api(api_key):
|
||||
raise bad_key
|
||||
return {"detail": BackupFileRepo().post_file(uploaded_file)}
|
||||
Reference in New Issue
Block a user