feat (ui): keuze default roof folder
This commit is contained in:
@@ -11,6 +11,7 @@ from app.config import APP_DATA_DIR
|
||||
|
||||
class SessionService:
|
||||
FILE_DATE_SETTING_KEY = "set_file_date_to_first_aired_date"
|
||||
DEFAULT_ROOT_SETTING_KEY = "default_media_root_path"
|
||||
MAX_FILENAME_LEN = 220
|
||||
|
||||
def __init__(self) -> None:
|
||||
@@ -135,17 +136,29 @@ class SessionService:
|
||||
values = {str(row["key"]): str(row["value"]) for row in rows}
|
||||
return {
|
||||
self.FILE_DATE_SETTING_KEY: values.get(self.FILE_DATE_SETTING_KEY, "0") == "1",
|
||||
self.DEFAULT_ROOT_SETTING_KEY: values.get(self.DEFAULT_ROOT_SETTING_KEY) or None,
|
||||
}
|
||||
|
||||
def update_settings(self, settings: dict) -> dict:
|
||||
if self.FILE_DATE_SETTING_KEY not in settings:
|
||||
raise ValueError(f"missing required setting: {self.FILE_DATE_SETTING_KEY}")
|
||||
setting_value = settings[self.FILE_DATE_SETTING_KEY]
|
||||
if not isinstance(setting_value, bool):
|
||||
updated_at = datetime.now(timezone.utc).isoformat()
|
||||
current = self.get_settings()
|
||||
|
||||
allowed_keys = {self.FILE_DATE_SETTING_KEY, self.DEFAULT_ROOT_SETTING_KEY}
|
||||
unknown_keys = [key for key in settings.keys() if key not in allowed_keys]
|
||||
if unknown_keys:
|
||||
raise ValueError(f"unknown setting key: {unknown_keys[0]}")
|
||||
|
||||
merged = dict(current)
|
||||
merged.update(settings)
|
||||
|
||||
file_date_value = merged.get(self.FILE_DATE_SETTING_KEY)
|
||||
if not isinstance(file_date_value, bool):
|
||||
raise ValueError(f"{self.FILE_DATE_SETTING_KEY} must be boolean")
|
||||
|
||||
stored_value = "1" if setting_value else "0"
|
||||
updated_at = datetime.now(timezone.utc).isoformat()
|
||||
default_root_path = merged.get(self.DEFAULT_ROOT_SETTING_KEY)
|
||||
if default_root_path is not None and not isinstance(default_root_path, str):
|
||||
raise ValueError(f"{self.DEFAULT_ROOT_SETTING_KEY} must be string or null")
|
||||
default_root_path = (default_root_path or "").strip() or None
|
||||
|
||||
with self._connect() as conn:
|
||||
conn.execute(
|
||||
@@ -156,7 +169,17 @@ class SessionService:
|
||||
value = excluded.value,
|
||||
updated_at = excluded.updated_at
|
||||
""",
|
||||
(self.FILE_DATE_SETTING_KEY, stored_value, updated_at),
|
||||
(self.FILE_DATE_SETTING_KEY, "1" if file_date_value else "0", updated_at),
|
||||
)
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO app_settings (key, value, updated_at)
|
||||
VALUES (?, ?, ?)
|
||||
ON CONFLICT(key) DO UPDATE SET
|
||||
value = excluded.value,
|
||||
updated_at = excluded.updated_at
|
||||
""",
|
||||
(self.DEFAULT_ROOT_SETTING_KEY, default_root_path or "", updated_at),
|
||||
)
|
||||
|
||||
return self.get_settings()
|
||||
|
||||
Reference in New Issue
Block a user