Sort version files and mods on user profile (#432)

* ???

* Moardering fixes

Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
This commit is contained in:
wafflecoffee
2022-08-29 00:54:42 -04:00
committed by GitHub
parent bf8ac214a1
commit ee93d9b495
3 changed files with 70 additions and 45 deletions

View File

@@ -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,
)

View File

@@ -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<QueryFile> = 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<QueryFile> = 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