You've already forked AstralRinth
forked from didirus/AstralRinth
58093a9438
* fixes huge slowodwn on version item * changes! * fixes, touch ups, indices * clippy prepare
149 lines
8.7 KiB
JSON
149 lines
8.7 KiB
JSON
{
|
|
"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"
|
|
}
|