from __future__ import annotations from src.core.services.base import BaseService from src.enums import FlagType from ..models import PlaylistSynchronizationFlaggedChannel __all__ = ["FlaggedChannelService"] class FlaggedChannelService(BaseService[PlaylistSynchronizationFlaggedChannel]): model = PlaylistSynchronizationFlaggedChannel def __init__(self): super().__init__() self._whitelisted: list[str] | None = None self._blacklisted: list[str] | None = None def _get_channels(self) -> tuple[list[str], list[str]]: whitelisted: list[str] = [] blacklisted: list[str] = [] for channel in self.select_all(): if channel.flag_type == FlagType.whitelist: whitelisted.append(channel.channel_id) if channel.flag_type == FlagType.blacklist: blacklisted.append(channel.channel_id) return whitelisted, blacklisted @property def whitelisted_channels(self) -> list[str]: if self._whitelisted is None: self._whitelisted, self._blacklisted = self._get_channels() return self._whitelisted @property def blacklisted_channels(self) -> list[str]: if self._blacklisted is None: self._whitelisted, self._blacklisted = self._get_channels() return self._blacklisted