diff --git a/app/controllers/cardManager.py b/app/controllers/cardManager.py index 10393c9..6eabb6a 100644 --- a/app/controllers/cardManager.py +++ b/app/controllers/cardManager.py @@ -5,7 +5,7 @@ from sqlmodel import Session, select from typing import List from sqlalchemy.exc import NoResultFound -from ..model.models import Card, CardCreate +from ..model.models import Card, CardCreate, GroupDB from ..services.database import engine, get_session, add_and_refresh from ..services.auth import auth_is_admin import uuid as gen_uuid @@ -29,6 +29,12 @@ def register_card(cardInput: CardCreate): @card_router.post("/", response_model=Card) def add_card(cardInput: CardCreate, db: Session = Depends(get_session), admin: bool = Depends(auth_is_admin)): + try: assert db.exec(select(Card).where(Card.name == cardInput.name)).one_or_none() == None + except AssertionError: + raise HTTPException(status.HTTP_409_CONFLICT, detail="Name already used!") + try: assert db.exec(select(GroupDB).where(GroupDB.id == cardInput.group_id)).one_or_none() is not None + except AssertionError: + raise HTTPException(status.HTTP_404_NOT_FOUND, detail="GroupID not found!") card = register_card(cardInput) return add_and_refresh(db, card) @@ -40,7 +46,7 @@ def del_card(*, db: Session = Depends(get_session), admin: bool = Depends(auth_i card = db.exec(select(Card).where(Card.key == key)).one() except NoResultFound: logger.info(f"The key:'{key}' was not found in db!") - raise HTTPException(status_code=500, detail="Key on card not found in DB. Please tell an admin about this. KEY={key}") + raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Key on card not found in DB. Please tell an admin about this. KEY={key}") db.delete(card) db.commit() return {"message": "Card deleted successfully"} diff --git a/app/controllers/userManager.py b/app/controllers/userManager.py index 186e04a..22bfbb4 100644 --- a/app/controllers/userManager.py +++ b/app/controllers/userManager.py @@ -1,6 +1,6 @@ import logging logger = logging.getLogger(__name__) -from fastapi import APIRouter, HTTPException, Depends +from fastapi import APIRouter, HTTPException, Depends, status from sqlmodel import Session, select from typing import List @@ -13,6 +13,9 @@ user_router = APIRouter(tags=["Users"], prefix="/api/v1/users") @user_router.post("/", response_model=UserResponse) def create_user(*, db: Session = Depends(get_session), user: UserCreate, admin: bool = Depends(auth_is_admin)): hashed_password = {"passwordhash": get_password_hash(user.password)} + try: assert db.exec(select(UserDB).where(UserDB.name == user.name)).one_or_none() == None + except AssertionError: + raise HTTPException(status.HTTP_409_CONFLICT, detail="Name already used!") db_user = UserDB.model_validate(user, update=hashed_password) return add_and_refresh(db, db_user)