mirror of https://gitlab.com/pamhyr/pamhyr2
Config: Add SQLite command abstraction.
parent
a8321e0ef0
commit
25c39ac4e6
|
|
@ -22,17 +22,15 @@ class Config(SQL):
|
||||||
super(Config, self).__init__(db = self.filename)
|
super(Config, self).__init__(db = self.filename)
|
||||||
|
|
||||||
def _create(self):
|
def _create(self):
|
||||||
cur = self._db.cursor()
|
|
||||||
|
|
||||||
# Info (meta data)
|
# Info (meta data)
|
||||||
cur.execute("CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)")
|
self.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(f"INSERT INTO info VALUES ('version', '{self._version}')")
|
||||||
|
|
||||||
# Key / Value (data)
|
# 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
|
# Solver
|
||||||
cur.execute("""
|
self.execute("""
|
||||||
CREATE TABLE solver(
|
CREATE TABLE solver(
|
||||||
type TEXT NOT NULL,
|
type TEXT NOT NULL,
|
||||||
name TEXT NOT NULL UNIQUE,
|
name TEXT NOT NULL UNIQUE,
|
||||||
|
|
@ -49,7 +47,7 @@ class Config(SQL):
|
||||||
""")
|
""")
|
||||||
|
|
||||||
# Stricklers
|
# Stricklers
|
||||||
cur.execute("""
|
self.execute("""
|
||||||
CREATE TABLE stricklers(
|
CREATE TABLE stricklers(
|
||||||
name TEXT NOT NULL UNIQUE,
|
name TEXT NOT NULL UNIQUE,
|
||||||
comment TEXT NOT NULL,
|
comment TEXT NOT NULL,
|
||||||
|
|
@ -58,20 +56,18 @@ class Config(SQL):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
self._db.commit()
|
self.commit()
|
||||||
|
|
||||||
def _update(self):
|
def _update(self):
|
||||||
cur = self._db.cursor()
|
version = self.execute(f"SELECT value FROM info WHERE key='version'")
|
||||||
version = cur.execute(f"SELECT value FROM info WHERE key='version'")
|
|
||||||
|
|
||||||
if version.fetchone()[0] != self._version:
|
if version.fetchone()[0] != self._version:
|
||||||
print("update")
|
print("update")
|
||||||
|
|
||||||
def _load_solver(self):
|
def _load_solver(self):
|
||||||
cur = self._db.cursor()
|
|
||||||
self._solvers = []
|
self._solvers = []
|
||||||
|
|
||||||
solvers = cur.execute("SELECT * FROM solver")
|
solvers = self.execute("SELECT * FROM solver")
|
||||||
for solver in solvers.fetchall():
|
for solver in solvers.fetchall():
|
||||||
solver_type = solver[0]
|
solver_type = solver[0]
|
||||||
ctor = solver_type_list[solver_type]
|
ctor = solver_type_list[solver_type]
|
||||||
|
|
@ -88,11 +84,10 @@ class Config(SQL):
|
||||||
self._solvers.append(new)
|
self._solvers.append(new)
|
||||||
|
|
||||||
def _load_stricklers(self):
|
def _load_stricklers(self):
|
||||||
cur = self._db.cursor()
|
|
||||||
self.stricklers = StricklersList()
|
self.stricklers = StricklersList()
|
||||||
|
|
||||||
id = 0
|
id = 0
|
||||||
stricklers = cur.execute("SELECT * FROM stricklers")
|
stricklers = self.execute("SELECT * FROM stricklers")
|
||||||
for strickler in stricklers.fetchall():
|
for strickler in stricklers.fetchall():
|
||||||
new = Stricklers()
|
new = Stricklers()
|
||||||
new._name = strickler[0]
|
new._name = strickler[0]
|
||||||
|
|
@ -104,45 +99,42 @@ class Config(SQL):
|
||||||
id += 1
|
id += 1
|
||||||
|
|
||||||
def _load(self):
|
def _load(self):
|
||||||
cur = self._db.cursor()
|
|
||||||
|
|
||||||
# Meshing tool
|
# 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]
|
self.meshing_tool = v.fetchone()[0]
|
||||||
|
|
||||||
# Const
|
# 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])
|
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])
|
self.max_listing = int(v.fetchone()[0])
|
||||||
|
|
||||||
# Backup
|
# 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"
|
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]
|
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]
|
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])
|
self.backup_max = int(v.fetchone()[0])
|
||||||
|
|
||||||
# Editor
|
# 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]
|
self.editor = v.fetchone()[0]
|
||||||
|
|
||||||
# Languages
|
# 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.lang = v.fetchone()[0]
|
||||||
|
|
||||||
self._load_solver()
|
self._load_solver()
|
||||||
self._load_stricklers()
|
self._load_stricklers()
|
||||||
|
|
||||||
def _save_solver(self):
|
def _save_solver(self):
|
||||||
cur = self._db.cursor()
|
self.execute(f"DELETE FROM solver")
|
||||||
cur.execute(f"DELETE FROM solver")
|
|
||||||
|
|
||||||
for solver in self.solvers:
|
for solver in self.solvers:
|
||||||
cur.execute(f"""
|
self.execute(f"""
|
||||||
INSERT INTO solver VALUES (
|
INSERT INTO solver VALUES (
|
||||||
'{solver._type}',
|
'{solver._type}',
|
||||||
'{solver._name}',
|
'{solver._name}',
|
||||||
|
|
@ -156,14 +148,13 @@ class Config(SQL):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
self._db.commit()
|
self.commit()
|
||||||
|
|
||||||
def _save_stricklers(self):
|
def _save_stricklers(self):
|
||||||
cur = self._db.cursor()
|
self.execute(f"DELETE FROM stricklers")
|
||||||
cur.execute(f"DELETE FROM stricklers")
|
|
||||||
|
|
||||||
for stricklers in self.stricklers.stricklers:
|
for stricklers in self.stricklers.stricklers:
|
||||||
cur.execute(f"""
|
self.execute(f"""
|
||||||
INSERT INTO stricklers VALUES (
|
INSERT INTO stricklers VALUES (
|
||||||
'{stricklers._name}',
|
'{stricklers._name}',
|
||||||
'{stricklers._comment}',
|
'{stricklers._comment}',
|
||||||
|
|
@ -172,10 +163,9 @@ class Config(SQL):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
self._db.commit()
|
self.commit()
|
||||||
|
|
||||||
def _save(self):
|
def _save(self):
|
||||||
cur = self._db.cursor()
|
|
||||||
data = {
|
data = {
|
||||||
"segment": self.segment,
|
"segment": self.segment,
|
||||||
"meshing_tool": self.meshing_tool,
|
"meshing_tool": self.meshing_tool,
|
||||||
|
|
@ -189,10 +179,10 @@ class Config(SQL):
|
||||||
}
|
}
|
||||||
|
|
||||||
for key in data:
|
for key in data:
|
||||||
cur.execute(f"INSERT OR IGNORE INTO data VALUES ('{key}', '{data[key]}')")
|
self.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"UPDATE data SET value='{data[key]}' WHERE key='{key}'")
|
||||||
|
|
||||||
self._db.commit()
|
self.commit()
|
||||||
self._save_solver()
|
self._save_solver()
|
||||||
self._save_stricklers()
|
self._save_stricklers()
|
||||||
|
|
||||||
|
|
|
||||||
20
src/tools.py
20
src/tools.py
|
|
@ -167,7 +167,10 @@ def old_pamhyr_date_to_timestamp(date:str):
|
||||||
class SQL(object):
|
class SQL(object):
|
||||||
def __init__(self, db = "db.sqlite3"):
|
def __init__(self, db = "db.sqlite3"):
|
||||||
exists = Path(db).exists()
|
exists = Path(db).exists()
|
||||||
|
|
||||||
self._db = sqlite3.connect(db)
|
self._db = sqlite3.connect(db)
|
||||||
|
self._cur = self._db.cursor()
|
||||||
|
|
||||||
if not exists:
|
if not exists:
|
||||||
self._create() # Create db
|
self._create() # Create db
|
||||||
self._save() # Save
|
self._save() # Save
|
||||||
|
|
@ -175,14 +178,23 @@ class SQL(object):
|
||||||
self._update() # Update db scheme if necessary
|
self._update() # Update db scheme if necessary
|
||||||
self._load() # Load data
|
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):
|
def _create(self):
|
||||||
print("Create")
|
print("TODO: Create")
|
||||||
|
|
||||||
def _update(self):
|
def _update(self):
|
||||||
print("Update")
|
print("TODO: Update")
|
||||||
|
|
||||||
def _save(self):
|
def _save(self):
|
||||||
print("Save")
|
print("TODO: Save")
|
||||||
|
|
||||||
def _load(self):
|
def _load(self):
|
||||||
print("Load")
|
print("TODO: Load")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue