From 566c1cc1257ac4d86abe9abb432ecaa1851fb193 Mon Sep 17 00:00:00 2001 From: Felix Zett Date: Sun, 14 Sep 2025 20:11:27 +0200 Subject: [PATCH] feat: always regenerate all trips items after modifications --- backend/routes/items.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/backend/routes/items.py b/backend/routes/items.py index b296dc9..ef5d77f 100644 --- a/backend/routes/items.py +++ b/backend/routes/items.py @@ -4,6 +4,7 @@ from uuid import UUID from backend.database import get_db from backend import models from backend.schemas import ItemCreate, ItemOut, TagIdPayload, TagOut +from backend.crud import generate_trip_items router = APIRouter(prefix="/items", tags=["items"]) @@ -14,6 +15,18 @@ def list_items(db: Session = Depends(get_db)): return items +def regenerate_all_trips(db): + trips = db.query(models.Trip).all() + for trip in trips: + generate_trip_items( + db, + trip=trip, + selected_tag_ids=[t.id for t in trip.selected_tags], + marked_tag_ids=[t.id for t in trip.marked_tags], + ) + db.commit() + + @router.post("/", response_model=ItemOut) def create_item(payload: ItemCreate, db: Session = Depends(get_db)): user = db.query(models.User).first() @@ -38,6 +51,8 @@ def create_item(payload: ItemCreate, db: Session = Depends(get_db)): db.commit() db.refresh(item) + regenerate_all_trips(db) + return item @router.post("/{item_id}/tags", response_model=ItemOut) @@ -57,6 +72,9 @@ def add_tag_to_item(item_id: UUID, payload: TagIdPayload, db: Session = Depends( item.tags.append(tag) db.commit() db.refresh(item) + + regenerate_all_trips(db) + return item @router.delete("/{item_id}/tags/{tag_id}", response_model=ItemOut) @@ -72,6 +90,9 @@ def remove_tag_from_item(item_id: UUID, tag_id: UUID, db: Session = Depends(get_ item.tags.remove(tag) db.commit() db.refresh(item) + + regenerate_all_trips(db) + return item @router.delete("/{item_id}", status_code=204) @@ -82,6 +103,8 @@ def delete_item(item_id: UUID, db: Session = Depends(get_db)): db.delete(item) db.commit() + regenerate_all_trips(db) + @router.put("/{item_id}", response_model=ItemOut) def update_item_name(item_id: UUID, payload: dict, db: Session = Depends(get_db)): item = db.get(models.Item, item_id) @@ -93,4 +116,7 @@ def update_item_name(item_id: UUID, payload: dict, db: Session = Depends(get_db) item.name = name db.commit() db.refresh(item) + + regenerate_all_trips(db) + return item