{ "db_name": "PostgreSQL", "query": "\n WITH version_fields_cte AS (\n SELECT version_id, field_id, int_value, enum_value, string_value\n FROM version_fields WHERE version_id = ANY($1) \n ),\n\t\t\t\tversion_fields_json AS (\n\t\t\t\t\tSELECT DISTINCT version_id,\n JSONB_AGG( \n DISTINCT jsonb_build_object('field_id', field_id, 'int_value', int_value, 'enum_value', enum_value, 'string_value', string_value)\n ) version_fields_json\n FROM version_fields_cte\n GROUP BY version_id\n\t\t\t\t),\n\t\t\t\tloader_fields_cte AS (\n\t\t\t\t\tSELECT DISTINCT vf.version_id, lf.*, l.loader\n\t\t\t\t\tFROM loader_fields lf\n INNER JOIN version_fields_cte vf ON lf.id = vf.field_id\n\t\t\t\t\tLEFT JOIN loaders_versions lv ON vf.version_id = lv.version_id\n\t\t\t\t\tLEFT JOIN loaders l ON lv.loader_id = l.id\n GROUP BY vf.version_id, lf.enum_type, lf.id, l.loader\n\t\t\t\t),\n loader_fields_json AS (\n SELECT DISTINCT version_id,\n JSONB_AGG(\n DISTINCT jsonb_build_object(\n 'version_id', lf.version_id,\n 'lf_id', id, 'loader_name', loader, 'field', field, 'field_type', field_type, 'enum_type', enum_type, 'min_val', min_val, 'max_val', max_val, 'optional', optional\n )\n ) filter (where lf.id is not null) loader_fields_json\n FROM loader_fields_cte lf\n GROUP BY version_id\n ),\n loader_field_enum_values_json AS (\n SELECT DISTINCT version_id,\n JSONB_AGG(\n DISTINCT jsonb_build_object(\n 'id', lfev.id, 'enum_id', lfev.enum_id, 'value', lfev.value, 'ordering', lfev.ordering, 'created', lfev.created, 'metadata', lfev.metadata\n ) \n ) filter (where lfev.id is not null) loader_field_enum_values_json\n FROM loader_field_enum_values lfev\n INNER JOIN loader_fields_cte lf on lf.enum_type = lfev.enum_id\n GROUP BY version_id\n ),\n files_cte AS (\n SELECT DISTINCT version_id, f.id, f.url, f.filename, f.is_primary, f.size, f.file_type\n FROM files f\n WHERE f.version_id = ANY($1)\n ),\n files_json AS (\n SELECT DISTINCT version_id,\n JSONB_AGG(\n DISTINCT jsonb_build_object('id', id, 'url', url, 'filename', filename, 'primary', is_primary, 'size', size, 'file_type', file_type)\n ) files_json\n FROM files_cte lf\n GROUP BY version_id\n ),\n hashes_json AS (\n SELECT DISTINCT version_id,\n JSONB_AGG(\n DISTINCT jsonb_build_object('algorithm', algorithm, 'hash', encode(hash, 'escape'), 'file_id', file_id)\n ) hashes_json\n FROM hashes\n INNER JOIN files_cte lf on lf.id = hashes.file_id\n GROUP BY version_id\n ),\n dependencies_json AS (\n SELECT DISTINCT dependent_id as version_id,\n JSONB_AGG(\n DISTINCT jsonb_build_object('project_id', d.mod_dependency_id, 'version_id', d.dependency_id, 'dependency_type', d.dependency_type,'file_name', dependency_file_name)\n ) dependencies_json\n FROM dependencies d\n WHERE dependent_id = ANY($1)\n GROUP BY version_id\n )\n\n SELECT v.id id, v.mod_id mod_id, v.author_id author_id, v.name version_name, v.version_number version_number,\n v.changelog changelog, v.date_published date_published, v.downloads downloads,\n v.version_type version_type, v.featured featured, v.status status, v.requested_status requested_status, v.ordering ordering,\n ARRAY_AGG(DISTINCT l.loader) filter (where l.loader is not null) loaders,\n ARRAY_AGG(DISTINCT pt.name) filter (where pt.name is not null) project_types,\n ARRAY_AGG(DISTINCT g.slug) filter (where g.slug is not null) games,\n f.files_json files,\n h.hashes_json hashes,\n d.dependencies_json dependencies,\n vf.version_fields_json version_fields,\n lf.loader_fields_json loader_fields,\n lfev.loader_field_enum_values_json loader_field_enum_values\n FROM versions v\n LEFT OUTER JOIN loaders_versions lv on v.id = lv.version_id\n LEFT OUTER JOIN loaders l on lv.loader_id = l.id\n LEFT OUTER JOIN loaders_project_types lpt on l.id = lpt.joining_loader_id\n LEFT JOIN project_types pt on lpt.joining_project_type_id = pt.id\n LEFT OUTER JOIN loaders_project_types_games lptg on l.id = lptg.loader_id AND pt.id = lptg.project_type_id\n LEFT JOIN games g on lptg.game_id = g.id\n LEFT OUTER JOIN files_json f on v.id = f.version_id\n LEFT OUTER JOIN hashes_json h on v.id = h.version_id\n LEFT OUTER JOIN dependencies_json d on v.id = d.version_id\n LEFT OUTER JOIN version_fields_json vf ON v.id = vf.version_id\n LEFT OUTER JOIN loader_fields_json lf ON v.id = lf.version_id\n LEFT OUTER JOIN loader_field_enum_values_json lfev ON v.id = lfev.version_id\n WHERE v.id = ANY($1)\n GROUP BY v.id, vf.version_fields_json, lf.loader_fields_json, lfev.loader_field_enum_values_json, f.files_json, h.hashes_json, d.dependencies_json\n ORDER BY v.ordering ASC NULLS LAST, v.date_published ASC;\n ", "describe": { "columns": [ { "ordinal": 0, "name": "id", "type_info": "Int8" }, { "ordinal": 1, "name": "mod_id", "type_info": "Int8" }, { "ordinal": 2, "name": "author_id", "type_info": "Int8" }, { "ordinal": 3, "name": "version_name", "type_info": "Varchar" }, { "ordinal": 4, "name": "version_number", "type_info": "Varchar" }, { "ordinal": 5, "name": "changelog", "type_info": "Varchar" }, { "ordinal": 6, "name": "date_published", "type_info": "Timestamptz" }, { "ordinal": 7, "name": "downloads", "type_info": "Int4" }, { "ordinal": 8, "name": "version_type", "type_info": "Varchar" }, { "ordinal": 9, "name": "featured", "type_info": "Bool" }, { "ordinal": 10, "name": "status", "type_info": "Varchar" }, { "ordinal": 11, "name": "requested_status", "type_info": "Varchar" }, { "ordinal": 12, "name": "ordering", "type_info": "Int4" }, { "ordinal": 13, "name": "loaders", "type_info": "VarcharArray" }, { "ordinal": 14, "name": "project_types", "type_info": "VarcharArray" }, { "ordinal": 15, "name": "games", "type_info": "VarcharArray" }, { "ordinal": 16, "name": "files", "type_info": "Jsonb" }, { "ordinal": 17, "name": "hashes", "type_info": "Jsonb" }, { "ordinal": 18, "name": "dependencies", "type_info": "Jsonb" }, { "ordinal": 19, "name": "version_fields", "type_info": "Jsonb" }, { "ordinal": 20, "name": "loader_fields", "type_info": "Jsonb" }, { "ordinal": 21, "name": "loader_field_enum_values", "type_info": "Jsonb" } ], "parameters": { "Left": [ "Int8Array" ] }, "nullable": [ false, false, false, false, false, false, false, false, false, false, false, true, true, null, null, null, null, null, null, null, null, null ] }, "hash": "60072c3c62dd9203107d0827a3bdfafde925a1b3ff46043133ecb78200e6698e" }