feat: always regenerate all trips items after modifications
This commit is contained in:
parent
1135f3b7a8
commit
566c1cc125
1 changed files with 26 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue