mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-01-20 11:50:27 +00:00
41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database.models import SystemSetting
|
|
|
|
|
|
async def upsert_system_setting(
|
|
db: AsyncSession,
|
|
key: str,
|
|
value: Optional[str],
|
|
description: Optional[str] = None,
|
|
) -> SystemSetting:
|
|
result = await db.execute(
|
|
select(SystemSetting).where(SystemSetting.key == key)
|
|
)
|
|
setting = result.scalar_one_or_none()
|
|
|
|
if setting is None:
|
|
setting = SystemSetting(key=key, value=value, description=description)
|
|
db.add(setting)
|
|
else:
|
|
setting.value = value
|
|
if description is not None:
|
|
setting.description = description
|
|
|
|
await db.flush()
|
|
return setting
|
|
|
|
|
|
async def delete_system_setting(db: AsyncSession, key: str) -> None:
|
|
result = await db.execute(
|
|
select(SystemSetting).where(SystemSetting.key == key)
|
|
)
|
|
setting = result.scalar_one_or_none()
|
|
if setting is not None:
|
|
await db.delete(setting)
|
|
await db.flush()
|
|
|