Skip to content

Commit fb02cae

Browse files
authored
Merge pull request sam1am#8 from Kartones/dynamic-gog-db-ids-fetch
Awesome, thanks for the contribution. Looks good. feat: dynamically fetch GamePieceTypes from db
2 parents 71fa812 + a6cdcbd commit fb02cae

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

web/sources/gog.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,25 @@ def get_gog_library():
8383
return []
8484
cursor = conn.cursor()
8585

86+
# Get the GamePieceType IDs dynamically
87+
try:
88+
cursor.execute("SELECT id, type FROM GamePieceTypes WHERE type IN ('title', 'meta', 'originalImages', 'summary')")
89+
type_mapping = {row[1]: row[0] for row in cursor.fetchall()}
90+
91+
title_id = type_mapping.get('title')
92+
meta_id = type_mapping.get('meta')
93+
images_id = type_mapping.get('originalImages')
94+
summary_id = type_mapping.get('summary')
95+
96+
if not all([title_id, meta_id, images_id, summary_id]):
97+
raise ValueError(f"Some GamePieceTypes not found. Available types: {list(type_mapping.keys())}")
98+
except (sqlite3.OperationalError, ValueError) as e:
99+
print(f"[GOG DEBUG] Error fetching GamePieceTypes: {e}")
100+
conn.close()
101+
return []
102+
86103
# Query for owned GOG games with all their metadata
87-
# GamePieceTypes: 112=title, 104=meta, 24=originalImages, 111=summary
88-
query = """
104+
query = f"""
89105
SELECT
90106
lr.releaseKey,
91107
title.value as title_json,
@@ -95,13 +111,13 @@ def get_gog_library():
95111
FROM
96112
LibraryReleases lr
97113
LEFT JOIN
98-
GamePieces title ON lr.releaseKey = title.releaseKey AND title.gamePieceTypeId = 112
114+
GamePieces title ON lr.releaseKey = title.releaseKey AND title.gamePieceTypeId = {title_id}
99115
LEFT JOIN
100-
GamePieces meta ON lr.releaseKey = meta.releaseKey AND meta.gamePieceTypeId = 104
116+
GamePieces meta ON lr.releaseKey = meta.releaseKey AND meta.gamePieceTypeId = {meta_id}
101117
LEFT JOIN
102-
GamePieces images ON lr.releaseKey = images.releaseKey AND images.gamePieceTypeId = 24
118+
GamePieces images ON lr.releaseKey = images.releaseKey AND images.gamePieceTypeId = {images_id}
103119
LEFT JOIN
104-
GamePieces summary ON lr.releaseKey = summary.releaseKey AND summary.gamePieceTypeId = 111
120+
GamePieces summary ON lr.releaseKey = summary.releaseKey AND summary.gamePieceTypeId = {summary_id}
105121
WHERE
106122
lr.releaseKey LIKE 'gog_%'
107123
GROUP BY lr.releaseKey

0 commit comments

Comments
 (0)