Source code for pydotorg.domains.blogs.dependencies

"""Blogs domain dependency injection providers."""

from __future__ import annotations

from typing import TYPE_CHECKING

from pydotorg.domains.blogs.repositories import (
    BlogEntryRepository,
    FeedAggregateRepository,
    FeedRepository,
    RelatedBlogRepository,
)
from pydotorg.domains.blogs.services import BlogEntryService, FeedAggregateService, FeedService, RelatedBlogService

if TYPE_CHECKING:
    from sqlalchemy.ext.asyncio import AsyncSession


async def provide_feed_repository(db_session: AsyncSession) -> FeedRepository:
    """Provide a FeedRepository instance."""
    return FeedRepository(session=db_session)


async def provide_feed_service(db_session: AsyncSession) -> FeedService:
    """Provide a FeedService instance."""
    return FeedService(session=db_session)


async def provide_blog_entry_repository(db_session: AsyncSession) -> BlogEntryRepository:
    """Provide a BlogEntryRepository instance."""
    return BlogEntryRepository(session=db_session)


async def provide_blog_entry_service(db_session: AsyncSession) -> BlogEntryService:
    """Provide a BlogEntryService instance."""
    return BlogEntryService(session=db_session)


async def provide_feed_aggregate_repository(db_session: AsyncSession) -> FeedAggregateRepository:
    """Provide a FeedAggregateRepository instance."""
    return FeedAggregateRepository(session=db_session)


async def provide_feed_aggregate_service(db_session: AsyncSession) -> FeedAggregateService:
    """Provide a FeedAggregateService instance."""
    return FeedAggregateService(session=db_session)


async def provide_related_blog_repository(db_session: AsyncSession) -> RelatedBlogRepository:
    """Provide a RelatedBlogRepository instance."""
    return RelatedBlogRepository(session=db_session)


async def provide_related_blog_service(db_session: AsyncSession) -> RelatedBlogService:
    """Provide a RelatedBlogService instance."""
    return RelatedBlogService(session=db_session)


[docs] def get_blogs_dependencies() -> dict: """Get all blogs domain dependency providers.""" return { "feed_repository": provide_feed_repository, "feed_service": provide_feed_service, "blog_entry_repository": provide_blog_entry_repository, "blog_entry_service": provide_blog_entry_service, "feed_aggregate_repository": provide_feed_aggregate_repository, "feed_aggregate_service": provide_feed_aggregate_service, "related_blog_repository": provide_related_blog_repository, "related_blog_service": provide_related_blog_service, }