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.database import get_db
|
||||||
from backend import models
|
from backend import models
|
||||||
from backend.schemas import ItemCreate, ItemOut, TagIdPayload, TagOut
|
from backend.schemas import ItemCreate, ItemOut, TagIdPayload, TagOut
|
||||||
|
from backend.crud import generate_trip_items
|
||||||
|
|
||||||
router = APIRouter(prefix="/items", tags=["items"])
|
router = APIRouter(prefix="/items", tags=["items"])
|
||||||
|
|
||||||
|
|
@ -14,6 +15,18 @@ def list_items(db: Session = Depends(get_db)):
|
||||||
return items
|
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)
|
@router.post("/", response_model=ItemOut)
|
||||||
def create_item(payload: ItemCreate, db: Session = Depends(get_db)):
|
def create_item(payload: ItemCreate, db: Session = Depends(get_db)):
|
||||||
user = db.query(models.User).first()
|
user = db.query(models.User).first()
|
||||||
|
|
@ -38,6 +51,8 @@ def create_item(payload: ItemCreate, db: Session = Depends(get_db)):
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(item)
|
db.refresh(item)
|
||||||
|
|
||||||
|
regenerate_all_trips(db)
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
@router.post("/{item_id}/tags", response_model=ItemOut)
|
@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)
|
item.tags.append(tag)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(item)
|
db.refresh(item)
|
||||||
|
|
||||||
|
regenerate_all_trips(db)
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
@router.delete("/{item_id}/tags/{tag_id}", response_model=ItemOut)
|
@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)
|
item.tags.remove(tag)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(item)
|
db.refresh(item)
|
||||||
|
|
||||||
|
regenerate_all_trips(db)
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
||||||
@router.delete("/{item_id}", status_code=204)
|
@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.delete(item)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
regenerate_all_trips(db)
|
||||||
|
|
||||||
@router.put("/{item_id}", response_model=ItemOut)
|
@router.put("/{item_id}", response_model=ItemOut)
|
||||||
def update_item_name(item_id: UUID, payload: dict, db: Session = Depends(get_db)):
|
def update_item_name(item_id: UUID, payload: dict, db: Session = Depends(get_db)):
|
||||||
item = db.get(models.Item, item_id)
|
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
|
item.name = name
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(item)
|
db.refresh(item)
|
||||||
|
|
||||||
|
regenerate_all_trips(db)
|
||||||
|
|
||||||
return item
|
return item
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue