[order] remove param, always add new meal as last
This commit is contained in:
parent
c858fe2c96
commit
1eabac6d9f
6 changed files with 13 additions and 16 deletions
|
@ -22,9 +22,7 @@ class CreateMeal(AuthorizedController):
|
|||
raise HTTPException(status_code=404, detail="not found")
|
||||
|
||||
try:
|
||||
meal = await DBMeal.create(
|
||||
session, content.diary_id, content.order, content.name
|
||||
)
|
||||
meal = await DBMeal.create(session, content.diary_id, content.name)
|
||||
return Meal.from_orm(meal)
|
||||
except AssertionError as e:
|
||||
raise HTTPException(status_code=400, detail=e.args[0])
|
||||
|
@ -75,7 +73,7 @@ class CreateMealFromPreset(AuthorizedController):
|
|||
|
||||
try:
|
||||
meal = await DBMeal.create_from_preset(
|
||||
session, content.diary_id, content.order, content.name, preset
|
||||
session, content.diary_id, content.name, preset
|
||||
)
|
||||
return Meal.from_orm(meal)
|
||||
except AssertionError as e:
|
||||
|
|
|
@ -65,13 +65,14 @@ class Meal(Base, CommonMixin):
|
|||
cls,
|
||||
session: AsyncSession,
|
||||
diary_id: int,
|
||||
order: int = 0,
|
||||
name: Optional[str] = None,
|
||||
) -> "Meal":
|
||||
# check if order already exists in diary
|
||||
query = select(cls).where(cls.diary_id == diary_id).where(cls.order == order)
|
||||
query = (
|
||||
select(cls.order).where(cls.diary_id == diary_id).order_by(cls.order.desc())
|
||||
)
|
||||
existing_meal = await session.scalar(query)
|
||||
assert existing_meal is None, "order already exists in diary"
|
||||
order = existing_meal + 1 if existing_meal else 1
|
||||
|
||||
if name is None:
|
||||
name = f"Meal {order}"
|
||||
|
@ -93,14 +94,15 @@ class Meal(Base, CommonMixin):
|
|||
cls,
|
||||
session: AsyncSession,
|
||||
diary_id: int,
|
||||
order: int,
|
||||
name: Optional[str],
|
||||
preset: Preset,
|
||||
) -> "Meal":
|
||||
# check if order already exists in diary
|
||||
query = select(cls).where(cls.diary_id == diary_id).where(cls.order == order)
|
||||
query = (
|
||||
select(cls.order).where(cls.diary_id == diary_id).order_by(cls.order.desc())
|
||||
)
|
||||
existing_meal = await session.scalar(query)
|
||||
assert existing_meal is None, "order already exists in diary"
|
||||
order = existing_meal + 1 if existing_meal else 1
|
||||
|
||||
if name is None:
|
||||
name = preset.name or f"Meal {order}"
|
||||
|
|
|
@ -33,9 +33,7 @@ class Product(Base, CommonMixin):
|
|||
if q:
|
||||
q_list = q.split()
|
||||
for qq in q_list:
|
||||
query = query.filter(
|
||||
cls.name.ilike(f"%{qq.lower()}%")
|
||||
)
|
||||
query = query.filter(cls.name.ilike(f"%{qq.lower()}%"))
|
||||
|
||||
query = query.offset(offset).limit(limit)
|
||||
stream = await session.stream_scalars(query.order_by(cls.id))
|
||||
|
|
|
@ -25,7 +25,6 @@ class CreateMealPayload(BaseModel):
|
|||
"""CreateMealPayload."""
|
||||
|
||||
name: Optional[str]
|
||||
order: int
|
||||
diary_id: int
|
||||
|
||||
|
||||
|
@ -39,6 +38,5 @@ class CreateMealFromPresetPayload(BaseModel):
|
|||
"""CreateMealPayload."""
|
||||
|
||||
name: Optional[str]
|
||||
order: int
|
||||
diary_id: int
|
||||
preset_id: int
|
||||
|
|
|
@ -6,3 +6,4 @@ uvicorn[standard]
|
|||
python-jose[cryptography]
|
||||
passlib[bcrypt]
|
||||
fastapi-users
|
||||
pytest
|
||||
|
|
2
test.sh
2
test.sh
|
@ -54,7 +54,7 @@ ${DC} exec api bash -c "python -m fooder --create-tables"
|
|||
|
||||
# finally run tests
|
||||
set -xe
|
||||
pytest fooder -sv -k "${TESTS}"
|
||||
python -m pytest fooder -sv -k "${TESTS}"
|
||||
|
||||
# clean up after tests
|
||||
echo "cleaning up..."
|
||||
|
|
Loading…
Reference in a new issue