21 lines
790 B
Python
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)
|