models + refactor

This commit is contained in:
xds
2026-03-17 16:46:32 +03:00
parent e011805186
commit 14f9e7b7e9
15 changed files with 979 additions and 83 deletions

26
repos/settings_repo.py Normal file
View File

@@ -0,0 +1,26 @@
from typing import Optional
from motor.motor_asyncio import AsyncIOMotorClient
from models.Settings import SystemSettings
from datetime import datetime, UTC
class SettingsRepo:
def __init__(self, client: AsyncIOMotorClient, db_name: str):
self.collection = client[db_name]["settings"]
async def get_settings(self) -> SystemSettings:
doc = await self.collection.find_one({"_id": "system_settings"})
if not doc:
# Create default settings if not exists
settings = SystemSettings()
await self.collection.insert_one(settings.model_dump(by_alias=True))
return settings
return SystemSettings(**doc)
async def update_settings(self, settings: SystemSettings) -> bool:
settings.updated_at = datetime.now(UTC)
result = await self.collection.replace_one(
{"_id": "system_settings"},
settings.model_dump(by_alias=True),
upsert=True
)
return result.modified_count > 0 or result.upserted_id is not None