Files
Solo_bot/database/site_revision.py
T
2026-04-18 11:30:07 +00:00

35 lines
1.2 KiB
Python

from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from database.models import Setting
_KEY = "CONTENT_REVISION"
async def get_site_revision(session: AsyncSession) -> int:
result = await session.execute(select(Setting).where(Setting.key == _KEY))
setting = result.scalar_one_or_none()
if setting is None:
return 0
try:
return int(setting.value or 0)
except (TypeError, ValueError):
return 0
async def bump_site_revision(session: AsyncSession) -> int:
"""Инкрементирует глобальный счётчик контента сайта. Клиенты опрашивают его
и инвалидируют свои кэши при изменении значения."""
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=1, description="Счётчик ревизии контента сайта — инкремент на любом сохранении"))
return 1
try:
current = int(setting.value or 0)
except (TypeError, ValueError):
current = 0
setting.value = current + 1
return current + 1