Source code for app.repository.apikey_repository

from contextlib import AbstractAsyncContextManager
from typing import Callable

from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession

from app.model.api_key import ApiKey
from app.repository.base_repository import BaseRepository


[docs] class ApiKeyRepository(BaseRepository): """ Repository class for API keys. """ def __init__( self, session_factory: Callable[..., AbstractAsyncContextManager[AsyncSession]], model=ApiKey, ) -> None: super().__init__(session_factory, model)
[docs] async def read_all(self, page: int = 1, page_size: int = 100): """ Reads all API keys ordered by created_at desc. """ max_page_size = 100 if page_size > max_page_size: page_size = max_page_size async with self.session_factory() as session: stmt = ( select(self.model) .order_by(self.model.created_at.desc()) .limit(page_size) .offset((page - 1) * page_size) ) return (await session.execute(stmt)).scalars().all()