diff --git a/7project/backend/app/api/transactions.py b/7project/backend/app/api/transactions.py index 8a7215d..5fc361c 100644 --- a/7project/backend/app/api/transactions.py +++ b/7project/backend/app/api/transactions.py @@ -44,7 +44,10 @@ async def create_transaction( ) categories = list(res.scalars()) if len(categories) != len(set(payload.category_ids)): - raise HTTPException(status_code=400, detail="One or more categories not found") + raise HTTPException( + status_code=400, + detail="Duplicate category IDs provided or one or more categories not found" + ) tx.categories = categories session.add(tx) @@ -113,13 +116,16 @@ async def update_transaction( # Preload categories to avoid async lazy-load during assignment await session.refresh(tx, attribute_names=["categories"]) if payload.category_ids: + # Check for duplicate category IDs in the payload + if len(payload.category_ids) != len(set(payload.category_ids)): + raise HTTPException(status_code=400, detail="Duplicate category IDs in payload") res = await session.execute( select(Category).where( Category.user_id == user.id, Category.id.in_(payload.category_ids) ) ) categories = list(res.scalars()) - if len(categories) != len(set(payload.category_ids)): + if len(categories) != len(payload.category_ids): raise HTTPException(status_code=400, detail="One or more categories not found") tx.categories = categories else: