"""Abstract repository interface for PlannedDayExclusion. Adds entity-specific queries on top of the generic CRUD contract. Concrete implementations live in app/repositories_impl//. """ from abc import abstractmethod from datetime import date from uuid import UUID from app.entities.planned_day_exclusion import PlannedDayExclusion from app.repositories.base import Repository class PlannedDayExclusionRepository(Repository[PlannedDayExclusion]): @abstractmethod async def get_by_natural_key( self, workspace_id: UUID, child_id: UUID, parent_personal_data_uuid: UUID, day: date, ) -> PlannedDayExclusion | None: """Return the entry for a given (workspace, child, parent, date) (UNIQUE), or None.""" @abstractmethod async def list_by_workspace(self, workspace_id: UUID) -> list[PlannedDayExclusion]: """Return all exclusions for a workspace, ordered by date."""