From f5a5cb378ee7775a89631f223ba6bda43929a610 Mon Sep 17 00:00:00 2001 From: ahtlon Date: Sat, 25 Apr 2026 14:51:35 +0200 Subject: [PATCH] Create and use get_session, add_and_refresh function --- app/controllers/cardManager.py | 21 +++++++-------------- app/controllers/groupManager.py | 15 ++------------- app/controllers/userManager.py | 11 ++--------- app/services/database.py | 14 ++++++++++++-- 4 files changed, 23 insertions(+), 38 deletions(-) diff --git a/app/controllers/cardManager.py b/app/controllers/cardManager.py index c7cf32c..796866c 100644 --- a/app/controllers/cardManager.py +++ b/app/controllers/cardManager.py @@ -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: diff --git a/app/controllers/groupManager.py b/app/controllers/groupManager.py index b7fd3f5..5d3dd10 100644 --- a/app/controllers/groupManager.py +++ b/app/controllers/groupManager.py @@ -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): diff --git a/app/controllers/userManager.py b/app/controllers/userManager.py index b158c01..f312d42 100644 --- a/app/controllers/userManager.py +++ b/app/controllers/userManager.py @@ -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)): diff --git a/app/services/database.py b/app/services/database.py index 1c76bd0..eda2d22 100644 --- a/app/services/database.py +++ b/app/services/database.py @@ -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) \ No newline at end of file + 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 \ No newline at end of file