"""Service mixins and helpers for v2."""

from notora.v2.services.base import (
    RepositoryService,
    RepositoryServiceD,
    SoftDeleteRepositoryService,
    SoftDeleteRepositoryServiceD,
)
from notora.v2.services.config import ServiceConfig, ServiceConfigD
from notora.v2.services.factory import build_service, build_service_for_repo
from notora.v2.services.mixins import (
    CreateOrSkipServiceMixin,
    CreateServiceMixin,
    DeleteServiceMixin,
    ListingServiceMixin,
    M2MSyncMode,
    ManyToManyRelation,
    ManyToManySyncMixin,
    PaginationServiceMixin,
    PayloadMixin,
    RepositoryAccessorMixin,
    RetrievalServiceMixin,
    SerializerMixin,
    SerializerProtocol,
    SessionExecutorMixin,
    SoftDeleteServiceMixin,
    UpdateByFilterServiceMixin,
    UpdatedByServiceMixin,
    UpdateServiceMixin,
    UpsertServiceMixin,
)

__all__ = [
    'CreateOrSkipServiceMixin',
    'CreateServiceMixin',
    'DeleteServiceMixin',
    'ListingServiceMixin',
    'M2MSyncMode',
    'ManyToManyRelation',
    'ManyToManySyncMixin',
    'PaginationServiceMixin',
    'PayloadMixin',
    'RepositoryAccessorMixin',
    'RepositoryService',
    'RepositoryServiceD',
    'RetrievalServiceMixin',
    'SerializerMixin',
    'SerializerProtocol',
    'ServiceConfig',
    'ServiceConfigD',
    'SessionExecutorMixin',
    'SoftDeleteRepositoryService',
    'SoftDeleteRepositoryServiceD',
    'SoftDeleteServiceMixin',
    'UpdateByFilterServiceMixin',
    'UpdateServiceMixin',
    'UpdatedByServiceMixin',
    'UpsertServiceMixin',
    'build_service',
    'build_service_for_repo',
]
