Source code for pydotorg.domains.nominations.dependencies

"""Nominations domain dependency injection providers."""

from __future__ import annotations

from typing import TYPE_CHECKING

from pydotorg.domains.nominations.repositories import (
    ElectionRepository,
    NominationRepository,
    NomineeRepository,
)
from pydotorg.domains.nominations.services import (
    ElectionService,
    NominationService,
    NomineeService,
)

if TYPE_CHECKING:
    from sqlalchemy.ext.asyncio import AsyncSession


[docs] async def provide_election_repository(db_session: AsyncSession) -> ElectionRepository: """Provide an ElectionRepository instance.""" return ElectionRepository(session=db_session)
[docs] async def provide_election_service(db_session: AsyncSession) -> ElectionService: """Provide an ElectionService instance.""" return ElectionService(session=db_session)
[docs] async def provide_nominee_repository(db_session: AsyncSession) -> NomineeRepository: """Provide a NomineeRepository instance.""" return NomineeRepository(session=db_session)
[docs] async def provide_nominee_service(db_session: AsyncSession) -> NomineeService: """Provide a NomineeService instance.""" return NomineeService(session=db_session)
[docs] async def provide_nomination_repository(db_session: AsyncSession) -> NominationRepository: """Provide a NominationRepository instance.""" return NominationRepository(session=db_session)
[docs] async def provide_nomination_service(db_session: AsyncSession) -> NominationService: """Provide a NominationService instance.""" return NominationService(session=db_session)
[docs] def get_nominations_dependencies() -> dict: """Get all nominations domain dependency providers.""" return { "election_repository": provide_election_repository, "election_service": provide_election_service, "nominee_repository": provide_nominee_repository, "nominee_service": provide_nominee_service, "nomination_repository": provide_nomination_repository, "nomination_service": provide_nomination_service, }