from fastapi import APIRouter, Depends, HTTPException from sqlmodel import Session from typing import List from ..model.dbModels import Card, AccessAuthorization from ..model.card import CardBase, AccessAuthorizationCreate, AccessAuthorization as AccessSchema from ..services.database import engine import uuid as gen_uuid card_router = APIRouter(tags=["Card"]) def register_card(name: str): uuid = str(gen_uuid.uuid4()) #hier code für mifare registrierung card = Card(user_id=name, uuid=uuid) return card @card_router.get("/cards", response_model=List[AccessSchema]) def get_accesses(): with Session(engine) as db: accesses = db.query(AccessAuthorization).all() if accesses is None: raise HTTPException(status_code=404, detail="N/A") return accesses @card_router.post("/cards", response_model=AccessSchema) def create_access(access: AccessAuthorizationCreate): with Session(engine) as db: db_access = AccessAuthorization(**access.dict()) card = register_card(access.name) db.add(db_access) db.add(card) db.commit() db.refresh(db_access) return db_access @card_router.get("/cards/{auth_name}", response_model=List[CardBase]) def get_cards(auth_name: str): with Session(engine) as db: stmt = select(AccessAuthorization).where(AccessAuthorization.name == auth_name) access_auth = db.execute(stmt).scalar_one_or_none() if access_auth is None: raise HTTPException(status_code=404, detail="Not found!") return access_auth.card_id @card_router.post("/cards/{auth_name}", response_model=CardBase) def add_card(auth_name: str): with Session(engine) as db: card = register_card(auth_name) db.add(card) db.commit() db.refresh(card) return card #TODO: # -Split Authorisations + Cards # -Deactivation # -Deleting