Files
Solo_bot/database/site_state.py
T

32 lines
1.2 KiB
Python

from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from database.models import Setting
_KEY = "SITE_INITIALIZED"
async def is_site_initialized(session: AsyncSession) -> bool:
result = await session.execute(select(Setting).where(Setting.key == _KEY))
setting = result.scalar_one_or_none()
return bool(setting and setting.value is True)
async def mark_site_initialized(session: AsyncSession) -> None:
"""Идемпотентно выставляет флаг инициализации сайта."""
result = await session.execute(select(Setting).where(Setting.key == _KEY))
setting = result.scalar_one_or_none()
if setting is None:
session.add(Setting(key=_KEY, value=True, description="Сайт прошёл первую настройку админом"))
elif setting.value is not True:
setting.value = True
async def reset_site_initialized(session: AsyncSession) -> None:
"""Сброс флага — вызывается при полном ресете сайта через TG-бот."""
result = await session.execute(select(Setting).where(Setting.key == _KEY))
setting = result.scalar_one_or_none()
if setting is not None:
setting.value = False