From 0d0988c09069b4cb5cb0913ce970a68b1ad00c91 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Wed, 24 Sep 2025 10:55:55 +0800 Subject: [PATCH] feat: add functionality to attach model files to version data in SQLiteModelMetadataProvider --- py/services/model_metadata_provider.py | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/py/services/model_metadata_provider.py b/py/services/model_metadata_provider.py index 1a36d353..3099b5fc 100644 --- a/py/services/model_metadata_provider.py +++ b/py/services/model_metadata_provider.py @@ -389,6 +389,45 @@ class SQLiteModelMetadataProvider(ModelMetadataProvider): # Add any additional fields from version data result.update(version_data) + # Attach files associated with this version from model_files table + files_query = """ + SELECT data + FROM model_files + WHERE version_id = ? AND type = 'Model' + ORDER BY id ASC + """ + cursor = await db.execute(files_query, (version_id,)) + file_rows = await cursor.fetchall() + + files = [] + for file_row in file_rows: + try: + file_data = json.loads(file_row['data']) + except json.JSONDecodeError: + logger.warning( + "Skipping model_files entry with invalid JSON for version_id %s", version_id + ) + continue + # Remove 'modelId' and 'modelVersionId' fields if present + file_data.pop('modelId', None) + file_data.pop('modelVersionId', None) + files.append(file_data) + + if 'files' in result: + existing_files = result['files'] + if isinstance(existing_files, list): + existing_files.extend(files) + result['files'] = existing_files + else: + merged_files = files.copy() + if existing_files: + merged_files.insert(0, existing_files) + result['files'] = merged_files + elif files: + result['files'] = files + else: + result['files'] = [] + return result except json.JSONDecodeError: return None