diff --git a/src/database/models/project_item.rs b/src/database/models/project_item.rs index 3d3635d0..0334f578 100644 --- a/src/database/models/project_item.rs +++ b/src/database/models/project_item.rs @@ -765,9 +765,6 @@ impl Project { } ).try_collect().await?; - // TODO: Possible improvements to look into: - // - use multiple queries instead of CTES (for cleanliness?) - // - repeated joins to mods in separate CTEs- perhaps 1 CTE for mods and use later (in mods_gallery_json, mods_donations_json, etc.) let db_projects: Vec = sqlx::query!( " SELECT m.id id, m.name name, m.summary summary, m.downloads downloads, m.follows follows, diff --git a/src/models/v2/projects.rs b/src/models/v2/projects.rs index f9c2f4a9..3c8d0a44 100644 --- a/src/models/v2/projects.rs +++ b/src/models/v2/projects.rs @@ -104,15 +104,16 @@ impl LegacyProject { let mut loaders = data.loaders; - if let Some(versions_item) = versions_item { - game_versions = versions_item - .version_fields - .iter() - .find(|f| f.field_name == "game_versions") - .and_then(|f| MinecraftGameVersion::try_from_version_field(f).ok()) - .map(|v| v.into_iter().map(|v| v.version).collect()) - .unwrap_or(Vec::new()); + game_versions = data + .fields + .get("game_versions") + .unwrap_or(&Vec::new()) + .iter() + .filter_map(|v| v.as_str()) + .map(|v| v.to_string()) + .collect(); + if let Some(versions_item) = versions_item { // Extract side types from remaining fields (singleplayer, client_only, etc) let fields = versions_item .version_fields diff --git a/src/routes/v3/versions.rs b/src/routes/v3/versions.rs index ad34f3e9..fc9acb1e 100644 --- a/src/routes/v3/versions.rs +++ b/src/routes/v3/versions.rs @@ -824,6 +824,7 @@ pub async fn version_list( } response.sort(); + response.reverse(); response.dedup_by(|a, b| a.inner.id == b.inner.id); let response = filter_visible_versions(response, &user_option, &pool, &redis).await?;