from core.Errors import UnknownConnectionTypeError from core.models.Configuration import Configuration from datetime import datetime, timezone from typing import Optional class ConfigurationController: @staticmethod def get(): return Configuration.get() @staticmethod def get_or_new(): configuration = ConfigurationController.get() if configuration is None: return Configuration() return configuration @staticmethod def get_connection(): configuration = ConfigurationController.get() if configuration is None or configuration.connection not in ['system', 'tor']: raise UnknownConnectionTypeError('The preferred connection type could not be determined.') return configuration.connection @staticmethod def set_connection(connection: Optional[str] = None): configuration = ConfigurationController.get_or_new() configuration.connection = connection configuration.save(configuration) @staticmethod def get_auto_sync_enabled(): configuration = ConfigurationController.get() if configuration is None: return False return configuration.auto_sync_enabled @staticmethod def set_auto_sync_enabled(enable_auto_sync: Optional[bool] = None): configuration = ConfigurationController.get_or_new() configuration.auto_sync_enabled = enable_auto_sync configuration.save(configuration) @staticmethod def get_last_synced_at(): configuration = ConfigurationController.get() if configuration is None: return None return configuration.last_synced_at @staticmethod def update_last_synced_at(): configuration = ConfigurationController.get_or_new() configuration.last_synced_at = datetime.now(timezone.utc) Configuration.save(configuration) @staticmethod def update_or_create(configuration): Configuration.save(configuration)