Продолжаю имплементацию БД. Установщик теперь сохраняет и использует информацию об установленных модах.
This commit is contained in:
parent
097512e1e2
commit
c292a7f516
2 changed files with 95 additions and 9 deletions
64
mcgetdb.py
64
mcgetdb.py
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue