models + refactor
This commit is contained in:
@@ -10,6 +10,7 @@ from repos.idea_repo import IdeaRepo
|
||||
from repos.post_repo import PostRepo
|
||||
from repos.environment_repo import EnvironmentRepo
|
||||
from repos.inspiration_repo import InspirationRepo
|
||||
from repos.settings_repo import SettingsRepo
|
||||
|
||||
|
||||
from typing import Optional
|
||||
@@ -27,3 +28,4 @@ class DAO:
|
||||
self.posts = PostRepo(client, db_name)
|
||||
self.environments = EnvironmentRepo(client, db_name)
|
||||
self.inspirations = InspirationRepo(client, db_name)
|
||||
self.settings = SettingsRepo(client, db_name)
|
||||
|
||||
26
repos/settings_repo.py
Normal file
26
repos/settings_repo.py
Normal 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
|
||||
Reference in New Issue
Block a user