fooder-api/fooder/repository/user_product_usage.py

21 lines
790 B
Python

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)