33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from app.models.settings import GlobalSettings
|
|
from app.schemas.settings import SettingsUpdate
|
|
|
|
|
|
class SettingsService:
|
|
def get_or_create(self, db: Session) -> GlobalSettings:
|
|
settings = db.query(GlobalSettings).first()
|
|
if not settings:
|
|
settings = GlobalSettings()
|
|
db.add(settings)
|
|
db.commit()
|
|
db.refresh(settings)
|
|
return settings
|
|
|
|
def update(self, db: Session, payload: SettingsUpdate) -> GlobalSettings:
|
|
settings = self.get_or_create(db)
|
|
data = payload.model_dump(exclude={'clear_global_ssh_key'})
|
|
for key, value in data.items():
|
|
if key == 'global_ssh_key' and value is None and not payload.clear_global_ssh_key:
|
|
continue
|
|
setattr(settings, key, value)
|
|
if payload.clear_global_ssh_key:
|
|
settings.global_ssh_key = None
|
|
db.add(settings)
|
|
db.commit()
|
|
db.refresh(settings)
|
|
return settings
|
|
|
|
|
|
settings_service = SettingsService()
|