20 lines
594 B
Python
20 lines
594 B
Python
from typing import Optional
|
|
|
|
from sqlalchemy import select
|
|
|
|
from .base import BaseRepository
|
|
from ..models import UsageMetric
|
|
|
|
|
|
class UsageMetricRepository(BaseRepository[UsageMetric]):
|
|
model = UsageMetric
|
|
|
|
async def get_or_create(self, key: str) -> UsageMetric:
|
|
result = await self.session.execute(select(UsageMetric).where(UsageMetric.key == key))
|
|
instance = result.scalars().first()
|
|
if instance is None:
|
|
instance = UsageMetric(key=key, value=0)
|
|
self.session.add(instance)
|
|
await self.session.flush()
|
|
return instance
|