Coverage for src / local_deep_research / web / services / settings_service.py: 30%
31 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1from typing import Any, Dict, Optional, Union
3from loguru import logger
5from ...database.models import Setting
6from ...utilities.db_utils import get_settings_manager
9def set_setting(
10 key: str, value: Any, commit: bool = True, db_session=None
11) -> bool:
12 """
13 Set a setting value
15 Args:
16 key: Setting key
17 value: Setting value
18 commit: Whether to commit the change
19 db_session: Optional database session
21 Returns:
22 bool: True if successful
23 """
24 manager = get_settings_manager(db_session)
25 return manager.set_setting(key, value, commit)
28def get_all_settings() -> Dict[str, Any]:
29 """
30 Get all settings, optionally filtered by type
32 Returns:
33 Dict[str, Any]: Dictionary of settings
35 """
36 manager = get_settings_manager()
37 return manager.get_all_settings()
40def create_or_update_setting(
41 setting: Union[Dict[str, Any], Setting],
42 commit: bool = True,
43 db_session=None,
44) -> Optional[Setting]:
45 """
46 Create or update a setting
48 Args:
49 setting: Setting dictionary or object
50 commit: Whether to commit the change
51 db_session: Optional database session
53 Returns:
54 Optional[Setting]: The setting object if successful
55 """
56 manager = get_settings_manager(db_session)
57 return manager.create_or_update_setting(setting, commit)
60def bulk_update_settings(
61 settings_dict: Dict[str, Any], commit: bool = True, db_session=None
62) -> bool:
63 """
64 Update multiple settings from a dictionary
66 Args:
67 settings_dict: Dictionary of setting keys and values
68 commit: Whether to commit the changes
69 db_session: Optional database session
71 Returns:
72 bool: True if all updates were successful
73 """
74 manager = get_settings_manager(db_session)
75 success = True
77 for key, value in settings_dict.items():
78 if not manager.set_setting(key, value, commit=False):
79 success = False
81 if commit and success and manager.db_session:
82 try:
83 manager.db_session.commit()
84 # Emit WebSocket event for all changed settings
85 manager._emit_settings_changed(list(settings_dict.keys()))
86 except Exception:
87 logger.exception("Error committing bulk settings update")
88 manager.db_session.rollback()
89 success = False
91 return success
94def validate_setting(
95 setting: Setting, value: Any
96) -> tuple[bool, Optional[str]]:
97 """
98 Validate a setting value based on its type and constraints
100 Args:
101 setting: The Setting object to validate against
102 value: The value to validate
104 Returns:
105 tuple[bool, Optional[str]]: (is_valid, error_message)
106 """
107 from ..routes.settings_routes import (
108 validate_setting as routes_validate_setting,
109 )
111 return routes_validate_setting(setting, value)