from sqlalchemy import update as sa_update from fooder.domain.user_product_usage import UserProductUsage from fooder.repository.base import RepositoryBase class UserProductUsageRepository(RepositoryBase[UserProductUsage]): async def increment(self, user_id: int, product_id: int, count: int = 1) -> None: stmt = ( sa_update(UserProductUsage) .where( UserProductUsage.user_id == user_id, UserProductUsage.product_id == product_id, ) .values(count=UserProductUsage.count + count) ) result = await self.session.execute(stmt) if result.rowcount == 0: obj = UserProductUsage(user_id=user_id, product_id=product_id, count=count) await self.create(obj)