Skip to content

Commit 094d152

Browse files
committed
INTEGRITY: Add metadata for set.dat
1 parent 45bdfc7 commit 094d152

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

db_functions.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ def insert_fileset(
107107
transaction,
108108
log_text,
109109
conn,
110+
set_dat_metadata="",
110111
ip="",
111112
username=None,
112113
skiplog=None,
@@ -162,7 +163,7 @@ def insert_fileset(
162163
return (existing_entry, True)
163164

164165
# $game and $key should not be parsed as a mysql string, hence no quotes
165-
query = f"INSERT INTO fileset (game, status, src, `key`, megakey, `timestamp`) VALUES ({game}, '{status}', '{src}', {key}, {megakey}, FROM_UNIXTIME(@fileset_time_last))"
166+
query = f"INSERT INTO fileset (game, status, src, `key`, megakey, `timestamp`, set_dat_metadata) VALUES ({game}, '{status}', '{src}', {key}, {megakey}, FROM_UNIXTIME(@fileset_time_last), '{escape_string(set_dat_metadata)}')"
166167
fileset_id = -1
167168
with conn.cursor() as cursor:
168169
cursor.execute(query)
@@ -968,6 +969,11 @@ def set_process(
968969
megakey = ""
969970
log_text = f"State {source_status}."
970971

972+
set_dat_metadata = ""
973+
for meta in fileset:
974+
if meta != "rom":
975+
set_dat_metadata += meta + " = " + fileset[meta] + " , "
976+
971977
(fileset_id, existing) = insert_new_fileset(
972978
fileset,
973979
conn,
@@ -978,8 +984,10 @@ def set_process(
978984
transaction_id,
979985
log_text,
980986
user,
987+
set_dat_metadata=set_dat_metadata,
981988
skiplog=skiplog,
982989
)
990+
983991
if existing:
984992
continue
985993

@@ -2030,6 +2038,7 @@ def insert_new_fileset(
20302038
transaction_id,
20312039
log_text,
20322040
user,
2041+
set_dat_metadata="",
20332042
ip="",
20342043
skiplog=False,
20352044
):
@@ -2042,6 +2051,7 @@ def insert_new_fileset(
20422051
log_text,
20432052
conn,
20442053
username=user,
2054+
set_dat_metadata=set_dat_metadata,
20452055
ip=ip,
20462056
skiplog=skiplog,
20472057
)

fileset.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,18 +155,32 @@ def fileset():
155155
(id,),
156156
)
157157
row = cursor.fetchone()
158-
print(row)
159158
if row:
160159
id = row["fileset"]
161-
cursor.execute(f"SELECT * FROM fileset WHERE id = {id}")
160+
cursor.execute("SELECT status FROM fileset WHERE id = %s", (id,))
161+
status = cursor.fetchone()["status"]
162+
163+
if status == "dat":
164+
cursor.execute(
165+
"""SELECT id, game, status, src, `key`, megakey, `delete`, timestamp, set_dat_metadata FROM fileset WHERE id = %s""",
166+
(id,),
167+
)
168+
else:
169+
cursor.execute(
170+
"""SELECT id, game, status, src, `key`, megakey, `delete`, timestamp, detection_size, user_count FROM fileset WHERE id = %s""",
171+
(id,),
172+
)
173+
162174
result = cursor.fetchone()
163-
print(result)
164175
html += "<h3>Fileset details</h3>"
165176
html += "<table>\n"
166177
if result["game"]:
167-
cursor.execute(
168-
f"SELECT game.name as 'game name', engineid, gameid, extra, platform, language FROM fileset JOIN game ON game.id = fileset.game JOIN engine ON engine.id = game.engine WHERE fileset.id = {id}"
169-
)
178+
if status == "dat":
179+
query = """SELECT game.name as 'game name', engineid, gameid, extra, platform, language, fileset.set_dat_metadata FROM fileset JOIN game ON game.id = fileset.game JOIN engine ON engine.id = game.engine WHERE fileset.id = %s"""
180+
else:
181+
query = """SELECT game.name as 'game name', engineid, gameid, extra, platform, language FROM fileset JOIN game ON game.id = fileset.game JOIN engine ON engine.id = game.engine WHERE fileset.id = %s"""
182+
print(query)
183+
cursor.execute(query, (id,))
170184
result = {**result, **cursor.fetchone()}
171185
else:
172186
# result.pop('key', None)

schema.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,15 @@ def init_database():
209209
except Exception:
210210
cursor.execute("ALTER TABLE log MODIFY COLUMN `text` varchar(5000);")
211211

212+
try:
213+
cursor.execute(
214+
"ALTER TABLE fileset ADD COLUMN set_dat_metadata varchar(5000) DEFAULT 'UTF-8';"
215+
)
216+
except Exception:
217+
cursor.execute(
218+
"ALTER TABLE fileset MODIFY COLUMN set_dat_metadata varchar(5000) DEFAULT 'UTF-8';"
219+
)
220+
212221
for index, definition in indices.items():
213222
try:
214223
cursor.execute(definition)

0 commit comments

Comments
 (0)