Create and use get_session, add_and_refresh function

This commit is contained in:
2026-04-25 14:51:35 +02:00
parent f96894db8c
commit f5a5cb378e
4 changed files with 23 additions and 38 deletions

View File

@@ -1,28 +1,18 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session
from sqlmodel import Session, select
from typing import List
from ..model.models import Card, AccessAuthorizationDB, AccessAuthorizationCreate, AccessAuthorizationResponse
from ..services.database import engine
from ..model.models import Card
from ..services.database import engine, get_session, add_and_refresh
import uuid as gen_uuid
card_router = APIRouter(prefix="/cards", tags=["Card"])
def get_session():
with Session(engine) as db:
yield db
def register_card(group_id: int):
uuid = str(gen_uuid.uuid4()) #hier code für mifare registrierung
card = Card(group_id=group_id, uuid=uuid)
return card
def add_and_refresh(db: Session, obj):
db.add(obj)
db.commit()
db.refresh(obj)
return obj
@card_router.post("/{group_id}", response_model=Card)
def add_card(*, db: Session = Depends(get_session), group_id: int):
card = register_card(group_id)
@@ -37,7 +27,10 @@ def del_card(*, db: Session = Depends(get_session), card_id: int):
db.commit()
return {"message": "Card deleted successfully"}
##TBH not a big fan of having creation using group_id but deletion using card_id
@card_router.get("/{group_id}", response_model=List[Card])
def get_cards(*, db: Session = Depends(get_session), group_id: int):
cards = db.exec(select(Card).where(Card.group_id == group_id)).all()
return cards
#TODO:

View File

@@ -3,20 +3,10 @@ from sqlmodel import Session, select
from typing import List
from ..model.models import GroupDB, GroupResponse, GroupCreate
from ..services.database import engine
from ..services.database import engine, get_session, add_and_refresh
group_router = APIRouter(prefix="/groups", tags=["Group"])
def get_session():
with Session(engine) as db:
yield db
def add_and_refresh(db: Session, obj):
db.add(obj)
db.commit()
db.refresh(obj)
return obj
@group_router.get("/", response_model=List[GroupResponse])
def get_groups(*, db: Session = Depends(get_session)):
groups = db.exec(select(GroupDB)).all()
@@ -25,8 +15,7 @@ def get_groups(*, db: Session = Depends(get_session)):
@group_router.post("/", response_model=GroupResponse)
def create_group(*, db: Session = Depends(get_session), group: GroupCreate):
db_group = GroupDB.model_validate(group)
add_and_refresh(db, db_group)
return db_group
return add_and_refresh(db, db_group)
@group_router.delete("/{group_id}")
def delete_group(*, db: Session = Depends(get_session), group_id: int):

View File

@@ -3,22 +3,15 @@ from sqlmodel import Session, select
from typing import List
from ..model.models import UserResponse, UserCreate, UserDB, UserUpdate
from ..services.database import engine
from ..services.database import engine, get_session, add_and_refresh
user_router = APIRouter(tags=["Users"])
def get_session():
with Session(engine) as db:
yield db
@user_router.post("/users/", response_model=UserResponse)
def create_user(*, db: Session = Depends(get_session), user: UserCreate):
print("creating user with data ", user)
db_user = UserDB.model_validate(user)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
return add_and_refresh(db, db_user)
@user_router.get("/users/", response_model=List[UserResponse])
def read_users(*, db: Session = Depends(get_session)):

View File

@@ -1,4 +1,4 @@
from sqlmodel import create_engine, SQLModel
from sqlmodel import create_engine, SQLModel, Session
from ..model.models import Base
@@ -7,4 +7,14 @@ SQLALCHEMY_DATABASE_URL = "sqlite:///./gatekeeper.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
def create_db_and_tables():
SQLModel.metadata.create_all(engine)
SQLModel.metadata.create_all(engine)
def get_session():
with Session(engine) as db:
yield db
def add_and_refresh(db: Session, obj):
db.add(obj)
db.commit()
db.refresh(obj)
return obj