from typing import (
    List,
)

from edu_rdm_integration.adapters.caches import (
    WebEduFunctionCacheStorage,
    WebEduRunnerCacheStorage,
)
from educommon.integration_entities.entities import (
    BaseEntity,
)


class BaseExportDataRunnerCacheStorage(WebEduRunnerCacheStorage):
    """
    Базовый кеш помощников ранеров функций выгрузки данных для интеграции с "Региональная витрина данных".
    """


class BaseExportDataFunctionCacheStorage(WebEduFunctionCacheStorage):
    """
    Базовый кеш помощников функций выгрузки данных для интеграции с "Региональная витрина данных".
    """

    def _prepare_entity_instances(self, model_ids) -> List[BaseEntity]:
        """
        Формирование списка объектов сущностей для дальнейшей выгрузки.

        Необходимо переопределить логику формирования объектов у потомков.
        """
        return []

    def __init__(self, *args, model_ids, entities, **kwargs):
        super().__init__(*args, **kwargs)

        self._entity_enum_value = entities[0]

        self.entity_instances = self._prepare_entity_instances(model_ids=model_ids)
