"""Repository layer for Bobi."""

from __future__ import annotations

from bot.domain.settings import ChatSettings
from bot.infra.db.manager import db_manager


class SettingsRepository:
    async def get_all(self, chat_id: int) -> ChatSettings:
        rows = await db_manager.fetchall(
            "SELECT key, value FROM settings WHERE chat_id = ?",
            (chat_id,),
        )

        return ChatSettings(
            chat_id=chat_id,
            values={row["key"]: row["value"] for row in rows},
        )


settings_repository = SettingsRepository()


class LockRepository:
    async def get_chat_locks(self, chat_id: int) -> set[str]:
        rows = await db_manager.fetchall(
            "SELECT lock_type FROM locks WHERE chat_id = ?",
            (chat_id,),
        )

        return {row["lock_type"] for row in rows}


lock_repository = LockRepository()
