diff --git a/sqlx-data.json b/sqlx-data.json index 7db9872ef..3bcebd85c 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -426,6 +426,182 @@ ] } }, + "182d2466e978b9ec25ce205a6670f9c994e55650742153f6d5735a8771c55226": { + "query": "\n SELECT m.id id, m.title title, m.description description, m.downloads downloads,\n m.icon_url icon_url, m.body body, m.body_url body_url, m.published published,\n m.updated updated, m.status status,\n m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url,\n m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug,\n s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name,\n STRING_AGG(DISTINCT c.category, ',') categories, STRING_AGG(DISTINCT v.id::text, ',') versions\n FROM mods m\n LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id\n LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id\n LEFT OUTER JOIN versions v ON v.mod_id = m.id\n INNER JOIN statuses s ON s.id = m.status\n INNER JOIN side_types cs ON m.client_side = cs.id\n INNER JOIN side_types ss ON m.server_side = ss.id\n INNER JOIN licenses l ON m.license = l.id\n WHERE m.id IN (SELECT * FROM UNNEST($1::bigint[]))\n GROUP BY m.id, s.id, cs.id, ss.id, l.id;\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "title", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "description", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "downloads", + "type_info": "Int4" + }, + { + "ordinal": 4, + "name": "icon_url", + "type_info": "Varchar" + }, + { + "ordinal": 5, + "name": "body", + "type_info": "Varchar" + }, + { + "ordinal": 6, + "name": "body_url", + "type_info": "Varchar" + }, + { + "ordinal": 7, + "name": "published", + "type_info": "Timestamptz" + }, + { + "ordinal": 8, + "name": "updated", + "type_info": "Timestamptz" + }, + { + "ordinal": 9, + "name": "status", + "type_info": "Int4" + }, + { + "ordinal": 10, + "name": "issues_url", + "type_info": "Varchar" + }, + { + "ordinal": 11, + "name": "source_url", + "type_info": "Varchar" + }, + { + "ordinal": 12, + "name": "wiki_url", + "type_info": "Varchar" + }, + { + "ordinal": 13, + "name": "discord_url", + "type_info": "Varchar" + }, + { + "ordinal": 14, + "name": "license_url", + "type_info": "Varchar" + }, + { + "ordinal": 15, + "name": "team_id", + "type_info": "Int8" + }, + { + "ordinal": 16, + "name": "client_side", + "type_info": "Int4" + }, + { + "ordinal": 17, + "name": "server_side", + "type_info": "Int4" + }, + { + "ordinal": 18, + "name": "license", + "type_info": "Int4" + }, + { + "ordinal": 19, + "name": "slug", + "type_info": "Varchar" + }, + { + "ordinal": 20, + "name": "status_name", + "type_info": "Varchar" + }, + { + "ordinal": 21, + "name": "client_side_type", + "type_info": "Varchar" + }, + { + "ordinal": 22, + "name": "server_side_type", + "type_info": "Varchar" + }, + { + "ordinal": 23, + "name": "short", + "type_info": "Varchar" + }, + { + "ordinal": 24, + "name": "license_name", + "type_info": "Varchar" + }, + { + "ordinal": 25, + "name": "categories", + "type_info": "Text" + }, + { + "ordinal": 26, + "name": "versions", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int8Array" + ] + }, + "nullable": [ + false, + false, + false, + false, + true, + false, + true, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + false, + null, + null + ] + } + }, "19dc22c4d6d14222f8e8bace74c2961761c53b7375460ade15af921754d5d7da": { "query": "\n UPDATE mods\n SET license = $1\n WHERE (id = $2)\n ", "describe": { @@ -511,66 +687,8 @@ ] } }, - "2439ae8db5ae81aad03351e9a2e19259ef033110ed1c2d71bc0a643104ca32d0": { - "query": "\n UPDATE versions\n SET downloads = downloads + 1\n WHERE id = $1\n ", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int8" - ] - }, - "nullable": [] - } - }, - "24e5daad907eec54505274f93952d5c20f4bbdd3f771eb0a2fdfa6324768df39": { - "query": "\n SELECT short, name FROM licenses\n WHERE id = $1\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "short", - "type_info": "Varchar" - }, - { - "ordinal": 1, - "name": "name", - "type_info": "Varchar" - } - ], - "parameters": { - "Left": [ - "Int4" - ] - }, - "nullable": [ - false, - false - ] - } - }, - "25131559cb73a088000ab6379a769233440ade6c7511542da410065190d203fc": { - "query": "\n SELECT id FROM loaders\n WHERE loader = $1\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [ - false - ] - } - }, - "27193954d279b739f01a97ec47d46e06f2629d64254034b4b775b1e1880cce15": { - "query": "\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.changelog_url changelog_url, v.date_published date_published, v.downloads downloads,\n rc.channel release_channel, v.featured featured,\n ARRAY_AGG(DISTINCT gv.version) game_versions, ARRAY_AGG(DISTINCT l.loader) loaders,\n ARRAY_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url) files,\n ARRAY_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id) hashes\n FROM versions v\n INNER JOIN release_channels rc on v.release_channel = rc.id\n LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id\n LEFT OUTER JOIN game_versions gv on gvv.game_version_id = gv.id\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 files f on v.id = f.version_id\n LEFT OUTER JOIN hashes h on f.id = h.file_id\n WHERE v.id = $1\n GROUP BY v.id, rc.id;\n ", + "219369194dd52ff431f84c9d92c8aa2be4ce0927a1990f6b5fd84152327b26dd": { + "query": "\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.changelog_url changelog_url, v.date_published date_published, v.downloads downloads,\n rc.channel release_channel, v.featured featured,\n STRING_AGG(DISTINCT gv.version, ',') game_versions, STRING_AGG(DISTINCT l.loader, ',') loaders,\n STRING_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url, ' ,') files,\n STRING_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id, ' ,') hashes\n FROM versions v\n INNER JOIN release_channels rc on v.release_channel = rc.id\n LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id\n LEFT OUTER JOIN game_versions gv on gvv.game_version_id = gv.id\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 files f on v.id = f.version_id\n LEFT OUTER JOIN hashes h on f.id = h.file_id\n WHERE v.id = $1\n GROUP BY v.id, rc.id;\n ", "describe": { "columns": [ { @@ -631,22 +749,22 @@ { "ordinal": 11, "name": "game_versions", - "type_info": "VarcharArray" + "type_info": "Text" }, { "ordinal": 12, "name": "loaders", - "type_info": "VarcharArray" + "type_info": "Text" }, { "ordinal": 13, "name": "files", - "type_info": "TextArray" + "type_info": "Text" }, { "ordinal": 14, "name": "hashes", - "type_info": "TextArray" + "type_info": "Text" } ], "parameters": { @@ -673,6 +791,168 @@ ] } }, + "2439ae8db5ae81aad03351e9a2e19259ef033110ed1c2d71bc0a643104ca32d0": { + "query": "\n UPDATE versions\n SET downloads = downloads + 1\n WHERE id = $1\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [] + } + }, + "244ee3f0f9b0229a9e97ff9f7a2808b4d6ee6d24be008606db1198a54a33c468": { + "query": "\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.changelog_url changelog_url, v.date_published date_published, v.downloads downloads,\n rc.channel release_channel, v.featured featured,\n STRING_AGG(DISTINCT gv.version, ',') game_versions, STRING_AGG(DISTINCT l.loader, ',') loaders,\n STRING_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url, ' ,') files,\n STRING_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id, ' ,') hashes\n FROM versions v\n INNER JOIN release_channels rc on v.release_channel = rc.id\n LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id\n LEFT OUTER JOIN game_versions gv on gvv.game_version_id = gv.id\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 files f on v.id = f.version_id\n LEFT OUTER JOIN hashes h on f.id = h.file_id\n WHERE v.id IN (SELECT * FROM UNNEST($1::bigint[]))\n GROUP BY v.id, rc.id;\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": "changelog_url", + "type_info": "Varchar" + }, + { + "ordinal": 7, + "name": "date_published", + "type_info": "Timestamptz" + }, + { + "ordinal": 8, + "name": "downloads", + "type_info": "Int4" + }, + { + "ordinal": 9, + "name": "release_channel", + "type_info": "Varchar" + }, + { + "ordinal": 10, + "name": "featured", + "type_info": "Bool" + }, + { + "ordinal": 11, + "name": "game_versions", + "type_info": "Text" + }, + { + "ordinal": 12, + "name": "loaders", + "type_info": "Text" + }, + { + "ordinal": 13, + "name": "files", + "type_info": "Text" + }, + { + "ordinal": 14, + "name": "hashes", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int8Array" + ] + }, + "nullable": [ + false, + false, + false, + false, + false, + false, + true, + false, + false, + false, + false, + null, + null, + null, + null + ] + } + }, + "24e5daad907eec54505274f93952d5c20f4bbdd3f771eb0a2fdfa6324768df39": { + "query": "\n SELECT short, name FROM licenses\n WHERE id = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "short", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "name", + "type_info": "Varchar" + } + ], + "parameters": { + "Left": [ + "Int4" + ] + }, + "nullable": [ + false, + false + ] + } + }, + "25131559cb73a088000ab6379a769233440ade6c7511542da410065190d203fc": { + "query": "\n SELECT id FROM loaders\n WHERE loader = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false + ] + } + }, "29e657d26f0fb24a766f5b5eb6a94d01d1616884d8ca10e91536e974d5b585a6": { "query": "\n INSERT INTO loaders_versions (loader_id, version_id)\n VALUES ($1, $2)\n ", "describe": { @@ -812,6 +1092,182 @@ "nullable": [] } }, + "36603c3b34a13d5b57d302e54159279bca9a918bb804ead378bd86e0512a9ef5": { + "query": "\n SELECT m.id id, m.title title, m.description description, m.downloads downloads,\n m.icon_url icon_url, m.body body, m.body_url body_url, m.published published,\n m.updated updated, m.status status,\n m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url,\n m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug,\n s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name,\n STRING_AGG(DISTINCT c.category, ',') categories, STRING_AGG(DISTINCT v.id::text, ',') versions\n FROM mods m\n LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id\n LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id\n LEFT OUTER JOIN versions v ON v.mod_id = m.id\n INNER JOIN statuses s ON s.id = m.status\n INNER JOIN side_types cs ON m.client_side = cs.id\n INNER JOIN side_types ss ON m.server_side = ss.id\n INNER JOIN licenses l ON m.license = l.id\n WHERE m.id = $1\n GROUP BY m.id, s.id, cs.id, ss.id, l.id;\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "title", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "description", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "downloads", + "type_info": "Int4" + }, + { + "ordinal": 4, + "name": "icon_url", + "type_info": "Varchar" + }, + { + "ordinal": 5, + "name": "body", + "type_info": "Varchar" + }, + { + "ordinal": 6, + "name": "body_url", + "type_info": "Varchar" + }, + { + "ordinal": 7, + "name": "published", + "type_info": "Timestamptz" + }, + { + "ordinal": 8, + "name": "updated", + "type_info": "Timestamptz" + }, + { + "ordinal": 9, + "name": "status", + "type_info": "Int4" + }, + { + "ordinal": 10, + "name": "issues_url", + "type_info": "Varchar" + }, + { + "ordinal": 11, + "name": "source_url", + "type_info": "Varchar" + }, + { + "ordinal": 12, + "name": "wiki_url", + "type_info": "Varchar" + }, + { + "ordinal": 13, + "name": "discord_url", + "type_info": "Varchar" + }, + { + "ordinal": 14, + "name": "license_url", + "type_info": "Varchar" + }, + { + "ordinal": 15, + "name": "team_id", + "type_info": "Int8" + }, + { + "ordinal": 16, + "name": "client_side", + "type_info": "Int4" + }, + { + "ordinal": 17, + "name": "server_side", + "type_info": "Int4" + }, + { + "ordinal": 18, + "name": "license", + "type_info": "Int4" + }, + { + "ordinal": 19, + "name": "slug", + "type_info": "Varchar" + }, + { + "ordinal": 20, + "name": "status_name", + "type_info": "Varchar" + }, + { + "ordinal": 21, + "name": "client_side_type", + "type_info": "Varchar" + }, + { + "ordinal": 22, + "name": "server_side_type", + "type_info": "Varchar" + }, + { + "ordinal": 23, + "name": "short", + "type_info": "Varchar" + }, + { + "ordinal": 24, + "name": "license_name", + "type_info": "Varchar" + }, + { + "ordinal": 25, + "name": "categories", + "type_info": "Text" + }, + { + "ordinal": 26, + "name": "versions", + "type_info": "Text" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + false, + false, + true, + false, + true, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + false, + null, + null + ] + } + }, "3831c1b321e47690f1f54597506a0d43362eda9540c56acb19c06532bba50b01": { "query": "\n SELECT id, user_id, role, permissions, accepted\n FROM team_members\n WHERE team_id = $1\n ", "describe": { @@ -1495,182 +1951,6 @@ ] } }, - "66a7129cf67c93af622024a9f0383ee30f1a9cf064e699e166b040f8f1bece87": { - "query": "\n SELECT m.id id, m.title title, m.description description, m.downloads downloads,\n m.icon_url icon_url, m.body body, m.body_url body_url, m.published published,\n m.updated updated, m.status status,\n m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url,\n m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug,\n s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name,\n ARRAY_AGG( DISTINCT c.category) categories, ARRAY_AGG(DISTINCT v.id) versions\n FROM mods m\n LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id\n LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id\n LEFT OUTER JOIN versions v ON v.mod_id = m.id\n INNER JOIN statuses s ON s.id = m.status\n INNER JOIN side_types cs ON m.client_side = cs.id\n INNER JOIN side_types ss ON m.server_side = ss.id\n INNER JOIN licenses l ON m.license = l.id\n WHERE m.id = $1\n GROUP BY m.id, s.id, cs.id, ss.id, l.id;\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int8" - }, - { - "ordinal": 1, - "name": "title", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "description", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "downloads", - "type_info": "Int4" - }, - { - "ordinal": 4, - "name": "icon_url", - "type_info": "Varchar" - }, - { - "ordinal": 5, - "name": "body", - "type_info": "Varchar" - }, - { - "ordinal": 6, - "name": "body_url", - "type_info": "Varchar" - }, - { - "ordinal": 7, - "name": "published", - "type_info": "Timestamptz" - }, - { - "ordinal": 8, - "name": "updated", - "type_info": "Timestamptz" - }, - { - "ordinal": 9, - "name": "status", - "type_info": "Int4" - }, - { - "ordinal": 10, - "name": "issues_url", - "type_info": "Varchar" - }, - { - "ordinal": 11, - "name": "source_url", - "type_info": "Varchar" - }, - { - "ordinal": 12, - "name": "wiki_url", - "type_info": "Varchar" - }, - { - "ordinal": 13, - "name": "discord_url", - "type_info": "Varchar" - }, - { - "ordinal": 14, - "name": "license_url", - "type_info": "Varchar" - }, - { - "ordinal": 15, - "name": "team_id", - "type_info": "Int8" - }, - { - "ordinal": 16, - "name": "client_side", - "type_info": "Int4" - }, - { - "ordinal": 17, - "name": "server_side", - "type_info": "Int4" - }, - { - "ordinal": 18, - "name": "license", - "type_info": "Int4" - }, - { - "ordinal": 19, - "name": "slug", - "type_info": "Varchar" - }, - { - "ordinal": 20, - "name": "status_name", - "type_info": "Varchar" - }, - { - "ordinal": 21, - "name": "client_side_type", - "type_info": "Varchar" - }, - { - "ordinal": 22, - "name": "server_side_type", - "type_info": "Varchar" - }, - { - "ordinal": 23, - "name": "short", - "type_info": "Varchar" - }, - { - "ordinal": 24, - "name": "license_name", - "type_info": "Varchar" - }, - { - "ordinal": 25, - "name": "categories", - "type_info": "VarcharArray" - }, - { - "ordinal": 26, - "name": "versions", - "type_info": "Int8Array" - } - ], - "parameters": { - "Left": [ - "Int8" - ] - }, - "nullable": [ - false, - false, - false, - false, - true, - false, - true, - false, - false, - false, - true, - true, - true, - true, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - null, - null - ] - } - }, "6b28cb8b54ef57c9b6f03607611f688455f0e2b27eb5deda5a8cbc5b506b4602": { "query": "\n DELETE FROM mods\n WHERE id = $1\n ", "describe": { @@ -2926,110 +3206,6 @@ ] } }, - "b55383bcaf275c83c94236dc91e0c43bd231db652d708484bec8838541f3aed4": { - "query": "\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.changelog_url changelog_url, v.date_published date_published, v.downloads downloads,\n rc.channel release_channel, v.featured featured,\n ARRAY_AGG(DISTINCT gv.version) game_versions, ARRAY_AGG(DISTINCT l.loader) loaders,\n ARRAY_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url) files,\n ARRAY_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id) hashes\n FROM versions v\n INNER JOIN release_channels rc on v.release_channel = rc.id\n LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id\n LEFT OUTER JOIN game_versions gv on gvv.game_version_id = gv.id\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 files f on v.id = f.version_id\n LEFT OUTER JOIN hashes h on f.id = h.file_id\n WHERE v.id IN (SELECT * FROM UNNEST($1::bigint[]))\n GROUP BY v.id, rc.id;\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": "changelog_url", - "type_info": "Varchar" - }, - { - "ordinal": 7, - "name": "date_published", - "type_info": "Timestamptz" - }, - { - "ordinal": 8, - "name": "downloads", - "type_info": "Int4" - }, - { - "ordinal": 9, - "name": "release_channel", - "type_info": "Varchar" - }, - { - "ordinal": 10, - "name": "featured", - "type_info": "Bool" - }, - { - "ordinal": 11, - "name": "game_versions", - "type_info": "VarcharArray" - }, - { - "ordinal": 12, - "name": "loaders", - "type_info": "VarcharArray" - }, - { - "ordinal": 13, - "name": "files", - "type_info": "TextArray" - }, - { - "ordinal": 14, - "name": "hashes", - "type_info": "TextArray" - } - ], - "parameters": { - "Left": [ - "Int8Array" - ] - }, - "nullable": [ - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, - false, - null, - null, - null, - null - ] - } - }, "b69a6f42965b3e7103fcbf46e39528466926789ff31e9ed2591bb175527ec169": { "query": "\n DELETE FROM users\n WHERE id = $1\n ", "describe": { @@ -3667,182 +3843,6 @@ ] } }, - "dbd1e0143971033875c783a1a0bc838b8c06c697ae310a15d283a2d1194275a4": { - "query": "\n SELECT m.id id, m.title title, m.description description, m.downloads downloads,\n m.icon_url icon_url, m.body body, m.body_url body_url, m.published published,\n m.updated updated, m.status status,\n m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url,\n m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug,\n s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name,\n ARRAY_AGG( DISTINCT c.category) categories, ARRAY_AGG(DISTINCT v.id) versions\n FROM mods m\n LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id\n LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id\n LEFT OUTER JOIN versions v ON v.mod_id = m.id\n INNER JOIN statuses s ON s.id = m.status\n INNER JOIN side_types cs ON m.client_side = cs.id\n INNER JOIN side_types ss ON m.server_side = ss.id\n INNER JOIN licenses l ON m.license = l.id\n WHERE m.id IN (SELECT * FROM UNNEST($1::bigint[]))\n GROUP BY m.id, s.id, cs.id, ss.id, l.id;\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int8" - }, - { - "ordinal": 1, - "name": "title", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "description", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "downloads", - "type_info": "Int4" - }, - { - "ordinal": 4, - "name": "icon_url", - "type_info": "Varchar" - }, - { - "ordinal": 5, - "name": "body", - "type_info": "Varchar" - }, - { - "ordinal": 6, - "name": "body_url", - "type_info": "Varchar" - }, - { - "ordinal": 7, - "name": "published", - "type_info": "Timestamptz" - }, - { - "ordinal": 8, - "name": "updated", - "type_info": "Timestamptz" - }, - { - "ordinal": 9, - "name": "status", - "type_info": "Int4" - }, - { - "ordinal": 10, - "name": "issues_url", - "type_info": "Varchar" - }, - { - "ordinal": 11, - "name": "source_url", - "type_info": "Varchar" - }, - { - "ordinal": 12, - "name": "wiki_url", - "type_info": "Varchar" - }, - { - "ordinal": 13, - "name": "discord_url", - "type_info": "Varchar" - }, - { - "ordinal": 14, - "name": "license_url", - "type_info": "Varchar" - }, - { - "ordinal": 15, - "name": "team_id", - "type_info": "Int8" - }, - { - "ordinal": 16, - "name": "client_side", - "type_info": "Int4" - }, - { - "ordinal": 17, - "name": "server_side", - "type_info": "Int4" - }, - { - "ordinal": 18, - "name": "license", - "type_info": "Int4" - }, - { - "ordinal": 19, - "name": "slug", - "type_info": "Varchar" - }, - { - "ordinal": 20, - "name": "status_name", - "type_info": "Varchar" - }, - { - "ordinal": 21, - "name": "client_side_type", - "type_info": "Varchar" - }, - { - "ordinal": 22, - "name": "server_side_type", - "type_info": "Varchar" - }, - { - "ordinal": 23, - "name": "short", - "type_info": "Varchar" - }, - { - "ordinal": 24, - "name": "license_name", - "type_info": "Varchar" - }, - { - "ordinal": 25, - "name": "categories", - "type_info": "VarcharArray" - }, - { - "ordinal": 26, - "name": "versions", - "type_info": "Int8Array" - } - ], - "parameters": { - "Left": [ - "Int8Array" - ] - }, - "nullable": [ - false, - false, - false, - false, - true, - false, - true, - false, - false, - false, - true, - true, - true, - true, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - null, - null - ] - } - }, "dc6aa2e7bfd5d5004620ddd4cd6a47ecc56159e1489054e0652d56df802fb5e5": { "query": "\n UPDATE mods\n SET body = $1\n WHERE (id = $2)\n ", "describe": { diff --git a/src/database/models/mod_item.rs b/src/database/models/mod_item.rs index 48fb1f8be..53a4f99ae 100644 --- a/src/database/models/mod_item.rs +++ b/src/database/models/mod_item.rs @@ -409,7 +409,7 @@ impl Mod { m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url, m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug, s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name, - ARRAY_AGG( DISTINCT c.category) categories, ARRAY_AGG(DISTINCT v.id) versions + STRING_AGG(DISTINCT c.category, ',') categories, STRING_AGG(DISTINCT v.id::text, ',') versions FROM mods m LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id @@ -450,13 +450,17 @@ impl Mod { slug: m.slug.clone(), body: m.body.clone(), }, - categories: m.categories.clone().unwrap_or_default(), + categories: m + .categories + .unwrap_or_default() + .split(",") + .map(|x| x.to_string()) + .collect(), versions: m .versions - .clone() .unwrap_or_default() - .into_iter() - .map(VersionId) + .split(",") + .map(|x| VersionId(x.parse().unwrap_or_default())) .collect(), donation_urls: vec![], status: crate::models::mods::ModStatus::from_str(&m.status_name), @@ -488,7 +492,7 @@ impl Mod { m.issues_url issues_url, m.source_url source_url, m.wiki_url wiki_url, m.discord_url discord_url, m.license_url license_url, m.team_id team_id, m.client_side client_side, m.server_side server_side, m.license license, m.slug slug, s.status status_name, cs.name client_side_type, ss.name server_side_type, l.short short, l.name license_name, - ARRAY_AGG( DISTINCT c.category) categories, ARRAY_AGG(DISTINCT v.id) versions + STRING_AGG(DISTINCT c.category, ',') categories, STRING_AGG(DISTINCT v.id::text, ',') versions FROM mods m LEFT OUTER JOIN mods_categories mc ON joining_mod_id = m.id LEFT OUTER JOIN categories c ON mc.joining_category_id = c.id @@ -527,8 +531,8 @@ impl Mod { slug: m.slug.clone(), body: m.body.clone(), }, - categories: m.categories.clone().unwrap_or_default(), - versions: m.versions.clone().unwrap_or_default().into_iter().map(VersionId).collect(), + categories: m.categories.unwrap_or_default().split(",").map(|x| x.to_string()).collect(), + versions: m.versions.unwrap_or_default().split(",").map(|x| VersionId(x.parse().unwrap_or_default())).collect(), donation_urls: vec![], status: crate::models::mods::ModStatus::from_str(&m.status_name), license_id: m.short, diff --git a/src/database/models/version_item.rs b/src/database/models/version_item.rs index 46496b168..bb3ae2d3b 100644 --- a/src/database/models/version_item.rs +++ b/src/database/models/version_item.rs @@ -466,9 +466,9 @@ impl Version { SELECT v.id id, v.mod_id mod_id, v.author_id author_id, v.name version_name, v.version_number version_number, v.changelog changelog, v.changelog_url changelog_url, v.date_published date_published, v.downloads downloads, rc.channel release_channel, v.featured featured, - ARRAY_AGG(DISTINCT gv.version) game_versions, ARRAY_AGG(DISTINCT l.loader) loaders, - ARRAY_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url) files, - ARRAY_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id) hashes + STRING_AGG(DISTINCT gv.version, ',') game_versions, STRING_AGG(DISTINCT l.loader, ',') loaders, + STRING_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url, ' ,') files, + STRING_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id, ' ,') hashes FROM versions v INNER JOIN release_channels rc on v.release_channel = rc.id LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id @@ -488,7 +488,7 @@ impl Version { if let Some(v) = result { let mut hashes: Vec<(FileId, String, Vec)> = Vec::new(); - v.hashes.unwrap_or_default().into_iter().for_each(|f| { + v.hashes.unwrap_or_default().split(" ,").for_each(|f| { let hash: Vec<&str> = f.split(", ").collect(); hashes.push(( FileId(hash[2].parse().unwrap_or(0)), @@ -511,7 +511,7 @@ impl Version { files: v .files .unwrap_or_default() - .into_iter() + .split(" ,") .map(|f| { let file: Vec<&str> = f.split(", ").collect(); let file_id = FileId(file[0].parse().unwrap_or(0)); @@ -532,8 +532,18 @@ impl Version { } }) .collect(), - game_versions: v.game_versions.unwrap_or_default(), - loaders: v.loaders.unwrap_or_default(), + game_versions: v + .game_versions + .unwrap_or_default() + .split(",") + .map(|x| x.to_string()) + .collect(), + loaders: v + .loaders + .unwrap_or_default() + .split(",") + .map(|x| x.to_string()) + .collect(), featured: v.featured, })) } else { @@ -556,9 +566,9 @@ impl Version { SELECT v.id id, v.mod_id mod_id, v.author_id author_id, v.name version_name, v.version_number version_number, v.changelog changelog, v.changelog_url changelog_url, v.date_published date_published, v.downloads downloads, rc.channel release_channel, v.featured featured, - ARRAY_AGG(DISTINCT gv.version) game_versions, ARRAY_AGG(DISTINCT l.loader) loaders, - ARRAY_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url) files, - ARRAY_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id) hashes + STRING_AGG(DISTINCT gv.version, ',') game_versions, STRING_AGG(DISTINCT l.loader, ',') loaders, + STRING_AGG(DISTINCT f.id || ', ' || f.filename || ', ' || f.is_primary || ', ' || f.url, ' ,') files, + STRING_AGG(DISTINCT h.algorithm || ', ' || encode(h.hash, 'escape') || ', ' || h.file_id, ' ,') hashes FROM versions v INNER JOIN release_channels rc on v.release_channel = rc.id LEFT OUTER JOIN game_versions_versions gvv on v.id = gvv.joining_version_id @@ -577,7 +587,7 @@ impl Version { Ok(e.right().map(|v| { let mut hashes : Vec<(FileId, String, Vec)> = Vec::new(); - v.hashes.unwrap_or_default().into_iter().for_each(|f| { + v.hashes.unwrap_or_default().split(" ,").for_each(|f| { let hash : Vec<&str> = f.split(", ").collect(); hashes.push((FileId(hash[2].parse().unwrap_or(0)), hash[0].to_string(), hash[1].to_string().into_bytes())); }); @@ -593,7 +603,8 @@ impl Version { date_published: v.date_published, downloads: v.downloads, release_channel: v.release_channel, - files: v.files.unwrap_or_default().into_iter().map(|f| { + files: v.files.unwrap_or_default() + .split(" ,").map(|f| { let file : Vec<&str> = f.split(", ").collect(); let file_id = FileId(file[0].parse().unwrap_or(0)); let mut file_hashes = HashMap::new(); @@ -612,8 +623,8 @@ impl Version { primary: file[3].parse().unwrap_or(false) } }).collect(), - game_versions: v.game_versions.unwrap_or_default(), - loaders: v.loaders.unwrap_or_default(), + game_versions: v.game_versions.unwrap_or_default().split(",").map(|x| x.to_string()).collect(), + loaders: v.loaders.unwrap_or_default().split(",").map(|x| x.to_string()).collect(), featured: v.featured, } }))