From 5cab65d1972bf91ded2b898ba29f98baf552f9c2 Mon Sep 17 00:00:00 2001 From: Geometrically <18202329+Geometrically@users.noreply.github.com> Date: Fri, 26 Mar 2021 22:10:30 -0700 Subject: [PATCH] Fix #178 (#179) --- .idea/vcs.xml | 7 +++++++ src/routes/versions.rs | 34 +++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7f4..13df3bb02 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,5 +1,12 @@ + + + diff --git a/src/routes/versions.rs b/src/routes/versions.rs index 05f44c516..55ba322e6 100644 --- a/src/routes/versions.rs +++ b/src/routes/versions.rs @@ -71,21 +71,33 @@ pub async fn version_list( // Attempt to populate versions with "auto featured" versions if response.is_empty() && !versions.is_empty() && filters.featured.unwrap_or(false) { - database::models::categories::GameVersion::list_filter(None, Some(true), &**pool) - .await? - .into_iter() - .for_each(|major_version| { - versions - .iter() - .find(|version| version.game_versions.contains(&major_version)) - .map(|version| response.push(convert_version(version.clone()))) - .unwrap_or(()); - }); + let loaders = database::models::categories::Loader::list(&**pool).await?; + let game_versions = + database::models::categories::GameVersion::list_filter(None, Some(true), &**pool) + .await?; + + let mut joined_filters = Vec::new(); + for game_version in &game_versions { + for loader in &loaders { + joined_filters.push((game_version, loader)) + } + } + + joined_filters.into_iter().for_each(|filter| { + versions + .iter() + .find(|version| { + version.game_versions.contains(&filter.0) + && version.loaders.contains(&filter.1) + }) + .map(|version| response.push(convert_version(version.clone()))) + .unwrap_or(()); + }); if response.is_empty() { versions .into_iter() - .for_each(|version| response.push(convert_version(version.clone()))); + .for_each(|version| response.push(convert_version(version))); } }