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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 45 deletions

View File

@ -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": [],

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