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