Продолжаю имплементацию БД. Установщик теперь сохраняет и использует информацию об установленных модах.

This commit is contained in:
Евгений Титаренко 2023-07-23 22:54:55 +03:00
parent 097512e1e2
commit c292a7f516
2 changed files with 95 additions and 9 deletions

View file

@ -3,6 +3,7 @@ import os
DB_VERSION = 1
class McGetDB:
def __init_db(self):
@ -10,8 +11,34 @@ class McGetDB:
db.execute('''
CREATE TABLE IF NOT EXISTS mods (
slug TEXT PRIMARY KEY NOT NULL,
install_path TEXT NOT NULL,
version TEXT NOT NULL
proj_name TEXT NOT NULL,
filename TEXT NOT NULL,
version TEXT NOT NULL,
hash TEXT NOT NULL
);''')
db.execute('''
CREATE TABLE IF NOT EXISTS resourcepacks (
slug TEXT PRIMARY KEY NOT NULL,
proj_name TEXT NOT NULL,
filename TEXT NOT NULL,
version TEXT NOT NULL,
hash TEXT NOT NULL
);''')
db.execute('''
CREATE TABLE IF NOT EXISTS shaderpacks (
slug TEXT PRIMARY KEY NOT NULL,
proj_name TEXT NOT NULL,
filename TEXT NOT NULL,
version TEXT NOT NULL,
hash TEXT NOT NULL
);''')
db.execute('''
CREATE TABLE IF NOT EXISTS modpacks (
slug TEXT PRIMARY KEY NOT NULL,
proj_name TEXT NOT NULL,
filename TEXT NOT NULL,
version TEXT NOT NULL,
hash TEXT NOT NULL
);''')
db.execute('''
CREATE TABLE IF NOT EXISTS properties (
@ -26,6 +53,16 @@ class McGetDB:
self.db = sqlite3.connect(self.db_path)
self.__init_db()
self.add_mod = self.__db_insert("mods")
self.add_resourcepack = self.__db_insert("resourcepacks")
self.add_shader = self.__db_insert("shaderpacks")
self.add_modpack = self.__db_insert("modpacks")
self.select_mod = self.__db_select_by_col("mods", "slug")
self.select_resourcepack = self.__db_select_by_col("resourcepacks", "slug")
self.select_shader = self.__db_select_by_col("shaderpacks", "slug")
self.select_modpack = self.__db_select_by_col("modpacks", "slug")
def get_properties(self):
properties = None
with self.db as db:
@ -34,7 +71,7 @@ class McGetDB:
''').fetchone()
return properties
def set_properties(self, mc_ver, modloader = "NULL", dir_hierarhy = "default"):
def set_properties(self, mc_ver, modloader="NULL", dir_hierarhy="default"):
with self.db as db:
db.execute('''
DELETE FROM properties;
@ -43,8 +80,25 @@ class McGetDB:
INSERT INTO properties VALUES (?, ?, ?, ?)
''', (DB_VERSION, mc_ver, modloader, dir_hierarhy))
def add_mod(self):
pass
def __db_insert(self, table):
def insertion_func(**kargs):
keys = []
values = []
for key, value in kargs.items():
keys.append(key)
values.append(value)
with self.db as db:
db.execute(f'''
INSERT INTO {table} ({', '.join([key for key in keys])}) VALUES ({', '.join(['?' for _ in values])})
''', values)
return insertion_func
def __db_select_by_col(self, table, col):
def selection_func(col_value):
with self.db as db:
res = db.execute(f'SELECT * FROM {table} WHERE {col} = "{col_value}"')
return res.fetchall()
return selection_func
def remove_mod(self):
pass