Files
social-app/backend/src/v1/memories/repository.py
T

32 lines
943 B
Python
Raw Normal View History

from __future__ import annotations
from typing import TYPE_CHECKING, Protocol
from uuid import UUID
from sqlalchemy import select
from core.db.base_repository import BaseRepository
from models.memories import Memory
if TYPE_CHECKING:
from sqlalchemy.ext.asyncio import AsyncSession
class MemoriesRepositoryLike(Protocol):
async def get_active_memories(self, *, owner_id: UUID) -> list[Memory]: ...
class MemoriesRepository(BaseRepository[Memory]):
def __init__(self, session: AsyncSession) -> None:
super().__init__(session=session, model=Memory)
async def get_active_memories(self, *, owner_id: UUID) -> list[Memory]:
stmt = (
select(Memory)
.where(Memory.owner_id == owner_id)
.where(Memory.status == "active")
.order_by(Memory.created_at.desc())
)
result = await self._session.execute(stmt)
return list(result.scalars().all())