/
ai-project
/
backend
Обзор
Документация
Войти
/
ai-project
/
backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
src/config/repository.py
53 строки
1 KB
Freyzan2006
feature: init project
25 фев 2026, 18:09
25 фев 2026, 18:09
92a04be
Код
Авторство
О чём код?
from abc import ABC, abstractmethod from typing import Generic, Sequence, TypeVar T = TypeVar("T") ID = TypeVar("ID") class Repository(Generic[T, ID], ABC): """ Базовый репозиторий для любой сущности. Общие методы могут быть здесь, если нужно. """ pass class ReadRepository(Repository[T, ID], ABC): """ Интерфейс только для операций чтения. """ @abstractmethod async def get_by_id(self, entity_id: ID) -> T | None: ... @abstractmethod async def list_all(self) -> Sequence[T]: ... @abstractmethod async def filter(self, **kwargs) -> Sequence[T]: ... class WriteRepository(Repository[T, ID], ABC): """ Интерфейс только для операций записи. """ @abstractmethod async def create(self, entity: T) -> T: ... @abstractmethod async def update(self, entity_id: ID, **kwargs) -> T: ... @abstractmethod async def delete(self, entity_id: ID) -> None: ... class BaseRepository(ReadRepository[T, ID], WriteRepository[T, ID], ABC): """ Полный репозиторий, объединяющий чтение и запись. Можно использовать для конкретных сущностей. """ pass