runtime settings loaded from DB/ refactoring admin-panel/ minor fixes and improvements

This commit is contained in:
Vladless
2025-11-15 23:14:34 +03:00
parent b249f3c694
commit 773f05d113
97 changed files with 8554 additions and 6514 deletions
+37
View File
@@ -0,0 +1,37 @@
from typing import Any
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from .models import Setting
async def get_setting(session: AsyncSession, key: str, default: Any = None) -> Any:
stmt = select(Setting).where(Setting.key == key)
result = await session.execute(stmt)
setting = result.scalar_one_or_none()
if setting is None or setting.value is None:
return default
return setting.value
async def set_setting(
session: AsyncSession,
key: str,
value: Any,
description: str | None = None,
) -> Setting:
stmt = select(Setting).where(Setting.key == key)
result = await session.execute(stmt)
setting = result.scalar_one_or_none()
if setting is None:
setting = Setting(key=key, value=value, description=description)
session.add(setting)
else:
setting.value = value
if description is not None:
setting.description = description
await session.flush()
return setting