Add basic card management

This commit is contained in:
2026-04-15 09:27:26 +02:00
parent eba10638fa
commit 0efb2e8edb
4 changed files with 106 additions and 10 deletions

View File

@@ -0,0 +1,56 @@
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