diff --git a/7project/backend/app/api/transactions.py b/7project/backend/app/api/transactions.py index cd8fe04..7308ecf 100644 --- a/7project/backend/app/api/transactions.py +++ b/7project/backend/app/api/transactions.py @@ -116,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: