Files
tam/api/app/system/backuprestore.py
T
2026-07-16 22:38:01 -04:00

38 lines
1.3 KiB
Python

from data.baskets import Basket, BasketRepo
from data.tickets import Ticket, TicketRepo
from .prefixes import Prefix, PrefixRepo
from dataclasses import dataclass, field
from typing import List
from fastapi import APIRouter, Header
from .auth import AuthRepo
chunk_size = 300
@dataclass
class BackupFile:
prefixes: List[Prefix] = field(default_factory=list)
baskets: List[Basket] = field(default_factory=list)
tickets: List[Ticket] = field(default_factory=list)
@dataclass
class ReturnMessage:
message: str
backuprestore_router = APIRouter(prefix="/api/backuprestore")
@backuprestore_router.get("")
def get_backup_file(tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
return BackupFile(prefixes=PrefixRepo().get_all_prefixes(), baskets=BasketRepo().get_all_baskets(), tickets=TicketRepo().get_all_tickets())
@backuprestore_router.post("")
def post_backup_file(bf: BackupFile, tam_key: str = Header("")):
AuthRepo().verify_key(tam_key)
for i in range(0, len(bf.prefixes), chunk_size):
PrefixRepo().post_prefixes(bf.prefixes[i:i+chunk_size])
for i in range(0, len(bf.baskets), chunk_size):
BasketRepo().post_baskets(bf.baskets[i:i+chunk_size])
for i in range(0, len(bf.tickets), chunk_size):
TicketRepo().post_tickets(bf.tickets[i:i+chunk_size])
return ReturnMessage(message="Backup file imported successfully.")