fooder-api/fooder/repository/meal.py

15 lines
607 B
Python

from sqlalchemy import select, func
from fooder.domain import Meal
from fooder.repository.base import RepositoryBase
class MealRepository(RepositoryBase[Meal]):
async def get_by_id_and_diary(self, meal_id: int, diary_id: int) -> Meal:
return await self._get(Meal.id == meal_id, Meal.diary_id == diary_id)
async def next_order(self, diary_id: int) -> int:
stmt = select(func.max(Meal.order)).where(Meal.diary_id == diary_id)
result = await self.session.execute(stmt)
max_order = result.scalar_one_or_none()
return 0 if max_order is None else max_order + 1