from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from sqlalchemy import select from typing import List from models import Card, AccessAuthorization from schemas.card import CardBase, AccessAuthorizationCreate, AccessAuthorization as AccessSchema from services.database import SessionLocal, engine import uuid as gen_uuid card_router = APIRouter(tags=["Card"]) def get_db(): db = SessionLocal() try: yield db finally: db.close() def register_card(db: Session, 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(db: Session = Depends(get_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, db: Session = Depends(get_db)): db_access = AccessAuthorization(**access.dict()) card = register_card(db, 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, db: Session = Depends(get_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, db: Session = Depends(get_db)): card = register_card(db, auth_name) db.add(card) db.commit() db.refresh(card) return card