Philipp Hörist pushed to branch master at gajim / gajim
Commits:
17076ced by Philipp Hörist at 2022-12-11T14:13:55+01:00
new: Settings: Allow to create Settings in memory
- - - - -
1d2fa904 by Philipp Hörist at 2022-12-11T14:13:55+01:00
new: Settings: Add shutdown() method
- - - - -
2 changed files:
- gajim/common/application.py
- gajim/common/settings.py
Changes:
=====================================
gajim/common/application.py
=====================================
@@ -244,6 +244,7 @@ def _shutdown_core(self) -> None:
app.storage.archive.cleanup_chat_history()
app.storage.cache.shutdown()
app.storage.archive.shutdown()
+ app.settings.shutdown()
self.end_profiling()
logind.shutdown()
=====================================
gajim/common/settings.py
=====================================
@@ -129,9 +129,10 @@ class SettingsDictT(TypedDict):
class Settings:
- def __init__(self):
+ def __init__(self, in_memory: bool = False):
self._con = cast(sqlite3.Connection, None)
self._commit_scheduled = None
+ self._in_memory = in_memory
self._settings: SettingsDictT = {}
self._app_overrides: dict[str, AllSettingsT] = {}
@@ -220,7 +221,10 @@ def _notify(self,
def init(self) -> None:
self._setup_installation_defaults()
- self._connect_database()
+ if self._in_memory:
+ self._connect_in_memory_database()
+ else:
+ self._connect_database()
self._load_settings()
self._load_account_settings()
if not self._settings['app']:
@@ -268,6 +272,20 @@ def _connect_database(self) -> None:
self._con = sqlite3.connect(path)
self._con.row_factory = self._namedtuple_factory
+ def _connect_in_memory_database(self) -> None:
+ log.info('Creating in memory')
+ self._con = sqlite3.connect(':memory:')
+ self._con.row_factory = self._namedtuple_factory
+
+ try:
+ self._con.executescript(CREATE_SQL)
+ except Exception:
+ log.exception('Error')
+ self._con.close()
+ sys.exit()
+
+ self._con.commit()
+
@staticmethod
def _create_database(statement: str, path: Path) -> None:
log.info('Creating %s', path)
@@ -313,6 +331,9 @@ def _scheduled_commit(self) -> None:
self._con.commit()
def _migrate_database(self) -> None:
+ if self._in_memory:
+ return
+
try:
self._migrate()
except Exception:
@@ -366,6 +387,9 @@ def _migrate(self) -> None:
self._set_user_version(4)
def _migrate_old_config(self) -> None:
+ if self._in_memory:
+ return
+
config_file = configpaths.get('CONFIG_FILE')
if not config_file.exists():
return
@@ -1319,6 +1343,15 @@ def remove_workspace(self, id_: str) -> None:
del self._settings['workspaces'][id_]
self._commit_settings('workspaces')
+ def shutdown(self) -> None:
+ if self._commit_scheduled is not None:
+ GLib.source_remove(self._commit_scheduled)
+ self._commit_scheduled = None
+
+ self._commit()
+ self._con.close()
+ del self._con
+
class LegacyConfig:
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/compare/40243c8e729db9745a1a57cfaff3ca839b638695...1d2fa904783d6493957311c8a3e0b4dc970ceb8b
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/compare/40243c8e729db9745a1a57cfaff3ca839b638695...1d2fa904783d6493957311c8a3e0b4dc970ceb8b
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits