from fastapi import APIRouter, Depends, HTTPException from sqlmodel import Session from typing import List from ..model.models import Card, AccessAuthorizationDB, AccessAuthorizationCreate, AccessAuthorizationResponse 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[AccessAuthorizationResponse]) 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=AccessAuthorizationResponse) 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[Card]) 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=Card) 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