32 lines
1.2 KiB
Python
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
|