fix: cooldowns
This commit is contained in:
parent
905f4da2d9
commit
527146e651
|
|
@ -4,6 +4,7 @@ from typing import List, Optional
|
|||
from uuid import UUID
|
||||
|
||||
from sqlalchemy import delete, func, select
|
||||
from sqlalchemy.dialects.postgresql import insert
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from hubgw.models.cooldown import Cooldown
|
||||
|
|
@ -17,16 +18,30 @@ class CooldownsRepository:
|
|||
self.session = session
|
||||
|
||||
async def create(self, request: CooldownCreate) -> Cooldown:
|
||||
"""Create new cooldown."""
|
||||
cooldown = Cooldown(
|
||||
player_uuid=request.player_uuid,
|
||||
cooldown_type=request.cooldown_type,
|
||||
expires_at=request.expires_at,
|
||||
cooldown_seconds=request.cooldown_seconds,
|
||||
cooldown_metadata=request.metadata,
|
||||
"""Create or update cooldown (UPSERT)."""
|
||||
stmt = (
|
||||
insert(Cooldown)
|
||||
.values(
|
||||
player_uuid=request.player_uuid,
|
||||
cooldown_type=request.cooldown_type,
|
||||
expires_at=request.expires_at,
|
||||
cooldown_seconds=request.cooldown_seconds,
|
||||
cooldown_metadata=request.metadata,
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
index_elements=["player_uuid", "cooldown_type"],
|
||||
set_={
|
||||
"expires_at": request.expires_at,
|
||||
"cooldown_seconds": request.cooldown_seconds,
|
||||
"metadata": request.metadata,
|
||||
"updated_at": func.now(),
|
||||
},
|
||||
)
|
||||
.returning(Cooldown)
|
||||
)
|
||||
self.session.add(cooldown)
|
||||
result = await self.session.execute(stmt)
|
||||
await self.session.commit()
|
||||
cooldown = result.scalar_one()
|
||||
await self.session.refresh(cooldown)
|
||||
return cooldown
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue