"""Repository container."""

from __future__ import annotations

from app.database.repositories.access import (
    DeliveryRepository,
    MembershipRepository,
    TokenRepository,
    effective_channels,
)
from app.database.repositories.broadcast import BroadcastRepository
from app.database.repositories.channels import ChannelRepository
from app.database.repositories.jobs import JobRepository
from app.database.repositories.media import MediaRepository
from app.database.repositories.posts import PostRepository
from app.database.repositories.stats import StatisticsRepository
from app.database.repositories.system import (
    AdminRepository,
    AuditRepository,
    OperationRepository,
    RateLimitRepository,
    SettingsRepository,
    UserRepository,
)
from app.database.session import Database


class Repositories:
    def __init__(self, db: Database) -> None:
        self.db = db
        self.users = UserRepository(db)
        self.admins = AdminRepository(db)
        self.settings = SettingsRepository(db)
        self.audit = AuditRepository(db)
        self.operations = OperationRepository(db)
        self.rate_limits = RateLimitRepository(db)
        self.media = MediaRepository(db)
        self.posts = PostRepository(db)
        self.channels = ChannelRepository(db)
        self.membership = MembershipRepository(db)
        self.tokens = TokenRepository(db)
        self.deliveries = DeliveryRepository(db)
        self.jobs = JobRepository(db)
        self.broadcast = BroadcastRepository(db)
        self.stats = StatisticsRepository(db)


__all__ = ["Repositories", "effective_channels"]
