Closed Viktor-Gostyaikin closed 1 year ago
class StorageABC:
def __init__(self, manager: Callable[[], Manager]):
self.manager = manager()
def get_item(item_id: str) -> dict:
...
def get_items(sort_order: dict[str, Any], pagination: PaginateQueryParams, filter: str | None = None, ) -> dict:
...
class FilmElasticStorageABC:
def get_items_by_genre():
...
def get_items_by_person():
...
def get_similar_items():
...
class PersonElasticStorage:
...
class GenreElasticStorage:
...
class FilmService:
def
async def get_by_id(self, film_id: str) -> Optional[Film]:
"""Получить фильм по ID"""
film = await self.storage(film_id)
# тут может быть ещё допобработка фильма, т.к. он не обязательно будет в том виде, который нужен для клиента при получении из стораджа
# film = prepare_film(film)
return film
Реализовал инверсию зависимостей для ручек, сервисов, менеджера еластика. Осталось доработать менеджер кэша