Commit 25c39ac4 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Config: Add SQLite command abstraction.

Showing with 43 additions and 41 deletions
+43 -41
......@@ -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()
......
......@@ -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")
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment