diff --git a/src/config.py b/src/config.py index f665a6aecc99f154df4d1704228547e4a2ac0807..599289229f485a51680e62349710f4bf8e57ab00 100644 --- a/src/config.py +++ b/src/config.py @@ -22,17 +22,15 @@ class Config(SQL): super(Config, self).__init__(db = self.filename) def _create(self): - cur = self._db.cursor() - # Info (meta data) - cur.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") - cur.execute(f"INSERT INTO info VALUES ('version', '{self._version}')") + self.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + self.execute(f"INSERT INTO info VALUES ('version', '{self._version}')") # Key / Value (data) - cur.execute("CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + self.execute("CREATE TABLE data(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") # Solver - cur.execute(""" + self.execute(""" CREATE TABLE solver( type TEXT NOT NULL, name TEXT NOT NULL UNIQUE, @@ -49,7 +47,7 @@ class Config(SQL): """) # Stricklers - cur.execute(""" + self.execute(""" CREATE TABLE stricklers( name TEXT NOT NULL UNIQUE, comment TEXT NOT NULL, @@ -58,20 +56,18 @@ class Config(SQL): ) """) - self._db.commit() + self.commit() def _update(self): - cur = self._db.cursor() - version = cur.execute(f"SELECT value FROM info WHERE key='version'") + version = self.execute(f"SELECT value FROM info WHERE key='version'") if version.fetchone()[0] != self._version: print("update") def _load_solver(self): - cur = self._db.cursor() self._solvers = [] - solvers = cur.execute("SELECT * FROM solver") + solvers = self.execute("SELECT * FROM solver") for solver in solvers.fetchall(): solver_type = solver[0] ctor = solver_type_list[solver_type] @@ -88,11 +84,10 @@ class Config(SQL): self._solvers.append(new) def _load_stricklers(self): - cur = self._db.cursor() self.stricklers = StricklersList() id = 0 - stricklers = cur.execute("SELECT * FROM stricklers") + stricklers = self.execute("SELECT * FROM stricklers") for strickler in stricklers.fetchall(): new = Stricklers() new._name = strickler[0] @@ -104,45 +99,42 @@ class Config(SQL): id += 1 def _load(self): - cur = self._db.cursor() - # Meshing tool - v = cur.execute("SELECT value FROM data WHERE key='meshing_tool'") + v = self.execute("SELECT value FROM data WHERE key='meshing_tool'") self.meshing_tool = v.fetchone()[0] # Const - v = cur.execute("SELECT value FROM data WHERE key='segment'") + v = self.execute("SELECT value FROM data WHERE key='segment'") self.segment = int(v.fetchone()[0]) - v = cur.execute("SELECT value FROM data WHERE key='max_listing'") + v = self.execute("SELECT value FROM data WHERE key='max_listing'") self.max_listing = int(v.fetchone()[0]) # Backup - v = cur.execute("SELECT value FROM data WHERE key='backup_enable'") + v = self.execute("SELECT value FROM data WHERE key='backup_enable'") self.backup_enable = v.fetchone()[0] == "True" - v = cur.execute("SELECT value FROM data WHERE key='backup_path'") + v = self.execute("SELECT value FROM data WHERE key='backup_path'") self.backup_path = v.fetchone()[0] - v = cur.execute("SELECT value FROM data WHERE key='backup_frequence'") + v = self.execute("SELECT value FROM data WHERE key='backup_frequence'") self.backup_frequence = v.fetchone()[0] - v = cur.execute("SELECT value FROM data WHERE key='backup_max'") + v = self.execute("SELECT value FROM data WHERE key='backup_max'") self.backup_max = int(v.fetchone()[0]) # Editor - v = cur.execute("SELECT value FROM data WHERE key='editor'") + v = self.execute("SELECT value FROM data WHERE key='editor'") self.editor = v.fetchone()[0] # Languages - v = cur.execute("SELECT value FROM data WHERE key='lang'") + v = self.execute("SELECT value FROM data WHERE key='lang'") self.lang = v.fetchone()[0] self._load_solver() self._load_stricklers() def _save_solver(self): - cur = self._db.cursor() - cur.execute(f"DELETE FROM solver") + self.execute(f"DELETE FROM solver") for solver in self.solvers: - cur.execute(f""" + self.execute(f""" INSERT INTO solver VALUES ( '{solver._type}', '{solver._name}', @@ -156,14 +148,13 @@ class Config(SQL): ) """) - self._db.commit() + self.commit() def _save_stricklers(self): - cur = self._db.cursor() - cur.execute(f"DELETE FROM stricklers") + self.execute(f"DELETE FROM stricklers") for stricklers in self.stricklers.stricklers: - cur.execute(f""" + self.execute(f""" INSERT INTO stricklers VALUES ( '{stricklers._name}', '{stricklers._comment}', @@ -172,10 +163,9 @@ class Config(SQL): ) """) - self._db.commit() + self.commit() def _save(self): - cur = self._db.cursor() data = { "segment": self.segment, "meshing_tool": self.meshing_tool, @@ -189,10 +179,10 @@ class Config(SQL): } for key in data: - cur.execute(f"INSERT OR IGNORE INTO data VALUES ('{key}', '{data[key]}')") - cur.execute(f"UPDATE data SET value='{data[key]}' WHERE key='{key}'") + self.execute(f"INSERT OR IGNORE INTO data VALUES ('{key}', '{data[key]}')") + self.execute(f"UPDATE data SET value='{data[key]}' WHERE key='{key}'") - self._db.commit() + self.commit() self._save_solver() self._save_stricklers() diff --git a/src/tools.py b/src/tools.py index 858779fb7f8db998c914b42eca814a3bde9d4705..83a147aaf1087a79f3ec8fd9d6d9954ef0996254 100644 --- a/src/tools.py +++ b/src/tools.py @@ -167,7 +167,10 @@ def old_pamhyr_date_to_timestamp(date:str): class SQL(object): def __init__(self, db = "db.sqlite3"): exists = Path(db).exists() + self._db = sqlite3.connect(db) + self._cur = self._db.cursor() + if not exists: self._create() # Create db self._save() # Save @@ -175,14 +178,23 @@ class SQL(object): self._update() # Update db scheme if necessary self._load() # Load data + def commit(self): + self._db.commit() + + def execute(self, cmd, commit = False): + value = self._cur.execute(cmd) + if commit: + self._db.commit() + return value + def _create(self): - print("Create") + print("TODO: Create") def _update(self): - print("Update") + print("TODO: Update") def _save(self): - print("Save") + print("TODO: Save") def _load(self): - print("Load") + print("TODO: Load")