2026-09-04 10:20:40 +08:00

26 lines
666 B
Python

"""Generic async repository primitives."""
from typing import Generic, TypeVar
from uuid import UUID
from sqlalchemy.ext.asyncio import AsyncSession
from app.database.base import Base
ModelT = TypeVar("ModelT", bound=Base)
class BaseRepository(Generic[ModelT]):
def __init__(self, session: AsyncSession, model: type[ModelT]) -> None:
self.session = session
self.model = model
async def add(self, entity: ModelT) -> ModelT:
self.session.add(entity)
await self.session.flush()
return entity
async def get(self, entity_id: UUID) -> ModelT | None:
return await self.session.get(self.model, entity_id)