Source code for pydotorg.domains.work_groups.services

"""Work Groups domain services for business logic."""

from __future__ import annotations

from advanced_alchemy.service import SQLAlchemyAsyncRepositoryService

from pydotorg.domains.work_groups.models import WorkGroup
from pydotorg.domains.work_groups.repositories import WorkGroupRepository


[docs] class WorkGroupService(SQLAlchemyAsyncRepositoryService[WorkGroup]): """Service for WorkGroup business logic.""" repository_type = WorkGroupRepository match_fields = ["slug"]
[docs] async def get_by_slug(self, slug: str) -> WorkGroup | None: """Get a work group by slug. Args: slug: The slug to search for. Returns: The work group if found, None otherwise. """ return await self.repository.get_by_slug(slug)
[docs] async def get_active_work_groups(self, limit: int = 100, offset: int = 0) -> list[WorkGroup]: """Get active work groups. Args: limit: Maximum number of work groups to return. offset: Number of work groups to skip. Returns: List of active work groups. """ return await self.repository.get_active_work_groups(limit=limit, offset=offset)