diff --git a/sqlx-data.json b/sqlx-data.json index 20679ac4b..2d94c2569 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -138,26 +138,6 @@ }, "query": "\n UPDATE versions\n SET downloads = $1\n WHERE (id = $2)\n " }, - "06c2d67bcbc95baa4b7e5865ec9adec7f068c1dfd3f859c29465b8d8a40343e0": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "\n SELECT m.id FROM mods m\n INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE\n WHERE tm.user_id = $1\n " - }, "07ebc9dc82cd012cd4f5880b1eb3d82602c195a3e3ddd557103ee037aa6dad1c": { "describe": { "columns": [], @@ -931,6 +911,26 @@ }, "query": "\n DELETE FROM mods_gallery\n WHERE mod_id = $1\n " }, + "220e59ae72edef546e3c7682ae91336bfba3e4230add1543910d80e846e0ad95": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "\n SELECT m.id FROM mods m\n INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE\n WHERE tm.user_id = $1\n ORDER BY m.downloads DESC\n " + }, "2278a7db5eb0474576fa9c86ba97bd6bf13864b3f9ce55ed2ab0cb94edbadaf5": { "describe": { "columns": [ @@ -1786,27 +1786,6 @@ }, "query": "\n SELECT id, user_id, role, permissions, accepted\n FROM team_members\n WHERE (team_id = $1 AND user_id = $2 AND accepted = TRUE)\n " }, - "4ccf5373d9593fd19622dba270ae2b194f8029f2fb05ad00ff6b3f2ac4d589b0": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8", - "Text" - ] - } - }, - "query": "\n SELECT m.id FROM mods m\n INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE\n WHERE tm.user_id = $1 AND m.status = (SELECT s.id FROM statuses s WHERE s.status = $2)\n " - }, "4cfafb61d38608152743c38cb8fb9a9c35e788fcbefe6f7f81476a3f144af3f8": { "describe": { "columns": [ @@ -3234,6 +3213,27 @@ }, "query": "\n SELECT tm.id, tm.team_id, tm.user_id, tm.role, tm.permissions, tm.accepted FROM versions v\n INNER JOIN mods m ON m.id = v.mod_id\n INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.user_id = $2 AND tm.accepted = TRUE\n WHERE v.id = $1\n " }, + "844735a1ffd4b17c96e0cc441c85b3d05325523b415c509bbf2860b7e1ca0de3": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8", + "Text" + ] + } + }, + "query": "\n SELECT m.id FROM mods m\n INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE\n WHERE tm.user_id = $1 AND m.status = (SELECT s.id FROM statuses s WHERE s.status = $2)\n ORDER BY m.downloads DESC\n " + }, "87fd169e19ba231c6cf131ad2841d5c3b95adde53e5ed4000f8e7d54c0e87320": { "describe": { "columns": [], diff --git a/src/database/models/user_item.rs b/src/database/models/user_item.rs index 0f1ffbca2..524a4a60e 100644 --- a/src/database/models/user_item.rs +++ b/src/database/models/user_item.rs @@ -209,6 +209,7 @@ impl User { SELECT m.id FROM mods m INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE WHERE tm.user_id = $1 AND m.status = (SELECT s.id FROM statuses s WHERE s.status = $2) + ORDER BY m.downloads DESC ", user_id as UserId, status, @@ -235,6 +236,7 @@ impl User { SELECT m.id FROM mods m INNER JOIN team_members tm ON tm.team_id = m.team_id AND tm.accepted = TRUE WHERE tm.user_id = $1 + ORDER BY m.downloads DESC ", user_id as UserId, ) diff --git a/src/database/models/version_item.rs b/src/database/models/version_item.rs index 7d66c3256..61e692774 100644 --- a/src/database/models/version_item.rs +++ b/src/database/models/version_item.rs @@ -2,6 +2,7 @@ use super::ids::*; use super::DatabaseError; use crate::database::models::convert_postgres_date; use chrono::{DateTime, Utc}; +use std::cmp::Ordering; use std::collections::HashMap; pub struct VersionBuilder { @@ -665,7 +666,8 @@ impl Version { }) .collect(); - v.files + let mut files: Vec = v + .files .unwrap_or_default() .into_iter() .flat_map(|f| { @@ -697,7 +699,17 @@ impl Version { None } }) - .collect() + .collect(); + files.sort_by(|a, b| { + if a.primary { + Ordering::Less + } else if b.primary { + Ordering::Greater + } else { + a.filename.cmp(&b.filename) + } + }); + files }, game_versions: { let game_versions = v.game_versions.unwrap_or_default(); @@ -832,7 +844,7 @@ impl Version { } }).collect(); - v.files.unwrap_or_default() + let mut files: Vec = v.files.unwrap_or_default() .into_iter() .flat_map(|f| { let file: Vec<&str> = f.split(" |||| ").collect(); @@ -858,7 +870,18 @@ impl Version { } else { None } - }).collect() + }) + .collect(); + files.sort_by(|a, b| { + if a.primary { + Ordering::Less + } else if b.primary { + Ordering::Greater + } else { + a.filename.cmp(&b.filename) + } + }); + files }, game_versions: { let game_versions = v