Files
gatekeeper/app/controllers/cardManager.py
ahtlon 22e57996c2 Finish sqlmodel migration
- merge card.py, user.py and dbmodels.py into models.py
- deduplicate
- change responsemodels in the manager functions
- correct inports
2026-04-23 22:41:48 +02:00

56 lines
1.8 KiB
Python

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