Skip to content

Commit 38ad2a9

Browse files
committed
ModVersion: return status on all endpoints
1 parent 047cd1f commit 38ad2a9

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

src/types/models/developer.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::collections::{hash_map::Entry, HashMap};
22

33
use serde::{Deserialize, Serialize};
4-
use sqlx::{query_builder, PgConnection, Postgres, QueryBuilder};
4+
use sqlx::{PgConnection, Postgres, QueryBuilder};
55

66
use crate::types::api::ApiError;
77

src/types/models/mod_entity.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct ModRecordGetOne {
8585
early_load: bool,
8686
api: bool,
8787
mod_id: String,
88+
status: ModVersionStatusEnum,
8889
about: Option<String>,
8990
changelog: Option<String>,
9091
created_at: DateTime<Utc>,
@@ -128,12 +129,12 @@ impl Mod {
128129
}
129130
}
130131
let mut builder: QueryBuilder<Postgres> = QueryBuilder::new(
131-
"SELECT q.id, q.repository, q.about, q.changelog, q.download_count, q.featured, q.created_at, q.updated_at
132-
FROM (SELECT m.id, m.repository, m.about, m.changelog, m.download_count, m.featured, m.created_at, m.updated_at,
132+
r#"SELECT q.id, q.repository, q.about, q.changelog, q.download_count, q.featured, q.created_at, q.updated_at, q.status as "status: _"
133+
FROM (SELECT m.id, m.repository, m.about, m.changelog, m.download_count, m.featured, m.created_at, m.updated_at, mvs.status,
133134
row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
134135
INNER JOIN mod_versions mv ON m.id = mv.mod_id
135136
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
136-
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id "
137+
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id "#
137138
);
138139
let mut counter_builder: QueryBuilder<Postgres> = QueryBuilder::new(
139140
"SELECT COUNT(DISTINCT m.id) FROM mods m
@@ -281,6 +282,8 @@ impl Mod {
281282
builder.push(" OFFSET ");
282283
builder.push_bind(offset);
283284

285+
log::info!("{}", builder.sql());
286+
284287
let result = builder
285288
.build_query_as::<ModRecord>()
286289
.fetch_all(&mut *pool)
@@ -488,14 +491,14 @@ impl Mod {
488491
pub async fn get_one(id: &str, pool: &mut PgConnection) -> Result<Option<Mod>, ApiError> {
489492
let records: Vec<ModRecordGetOne> = sqlx::query_as!(
490493
ModRecordGetOne,
491-
"SELECT
494+
r#"SELECT
492495
m.id, m.repository, m.about, m.changelog, m.featured, m.download_count as mod_download_count, m.created_at, m.updated_at,
493496
mv.id as version_id, mv.name, mv.description, mv.version, mv.download_link, mv.download_count as mod_version_download_count,
494-
mv.hash, mv.geode, mv.early_load, mv.api, mv.mod_id
497+
mv.hash, mv.geode, mv.early_load, mv.api, mv.mod_id, mvs.status as "status: _"
495498
FROM mods m
496499
INNER JOIN mod_versions mv ON m.id = mv.mod_id
497500
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
498-
WHERE m.id = $1 AND mvs.status = 'accepted'",
501+
WHERE m.id = $1 AND mvs.status = 'accepted'"#,
499502
id
500503
)
501504
.fetch_all(&mut *pool)
@@ -517,6 +520,7 @@ impl Mod {
517520
geode: x.geode.clone(),
518521
early_load: x.early_load,
519522
api: x.api,
523+
status: x.status,
520524
mod_id: x.mod_id.clone(),
521525
gd: DetailedGDVersion {
522526
win: None,

src/types/models/mod_version.rs

+17-13
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ pub struct ModVersion {
3232
pub api: bool,
3333
pub mod_id: String,
3434
pub gd: DetailedGDVersion,
35+
pub status: ModVersionStatusEnum,
3536
pub dependencies: Option<Vec<ResponseDependency>>,
3637
pub incompatibilities: Option<Vec<ResponseIncompatibility>>,
3738
pub developers: Option<Vec<Developer>>,
@@ -51,6 +52,7 @@ struct ModVersionGetOne {
5152
early_load: bool,
5253
api: bool,
5354
mod_id: String,
55+
status: ModVersionStatusEnum,
5456
}
5557

5658
impl ModVersionGetOne {
@@ -67,6 +69,7 @@ impl ModVersionGetOne {
6769
download_count: self.download_count,
6870
api: self.api,
6971
mod_id: self.mod_id.clone(),
72+
status: self.status,
7073
gd: DetailedGDVersion {
7174
win: None,
7275
android: None,
@@ -100,13 +103,14 @@ impl ModVersion {
100103

101104
let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
102105
r#"SELECT q.name, q.id, q.description, q.version, q.download_link, q.hash, q.geode, q.download_count,
103-
q.early_load, q.api, q.mod_id FROM (SELECT
104-
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count,
105-
mv.early_load, mv.api, mv.mod_id, row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
106-
INNER JOIN mod_versions mv ON m.id = mv.mod_id
107-
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
108-
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id
109-
WHERE mvs.status = 'accepted'
106+
q.early_load, q.api, q.mod_id, q.status FROM (
107+
SELECT
108+
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count, mvs.status as status,
109+
mv.early_load, mv.api, mv.mod_id, row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
110+
INNER JOIN mod_versions mv ON m.id = mv.mod_id
111+
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
112+
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id
113+
WHERE mvs.status = 'accepted'
110114
"#,
111115
);
112116
if let Some(g) = gd {
@@ -169,7 +173,7 @@ impl ModVersion {
169173
let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
170174
r#"SELECT DISTINCT
171175
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count,
172-
mv.early_load, mv.api, mv.mod_id FROM mod_versions mv
176+
mv.early_load, mv.api, mv.mod_id, mvs.status as "status: _" FROM mod_versions mv
173177
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
174178
WHERE mvs.status = 'pending' AND mv.mod_id IN ("#,
175179
);
@@ -211,8 +215,8 @@ impl ModVersion {
211215
) -> Result<ModVersion, ApiError> {
212216
let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
213217
r#"SELECT q.name, q.id, q.description, q.version, q.download_link, q.hash, q.geode, q.download_count,
214-
q.early_load, q.api, q.mod_id FROM (SELECT
215-
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count,
218+
q.early_load, q.api, q.mod_id, q.status FROM (SELECT
219+
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count, mvs.status,
216220
mv.early_load, mv.api, mv.mod_id, row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
217221
INNER JOIN mod_versions mv ON m.id = mv.mod_id
218222
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id
@@ -419,12 +423,12 @@ impl ModVersion {
419423
) -> Result<ModVersion, ApiError> {
420424
let result = sqlx::query_as!(
421425
ModVersionGetOne,
422-
"SELECT
426+
r#"SELECT
423427
mv.id, mv.name, mv.description, mv.version, mv.download_link, mv.download_count,
424-
mv.hash, mv.geode, mv.early_load, mv.api, mv.mod_id FROM mod_versions mv
428+
mv.hash, mv.geode, mv.early_load, mv.api, mv.mod_id, mvs.status as "status: _" FROM mod_versions mv
425429
INNER JOIN mods m ON m.id = mv.mod_id
426430
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
427-
WHERE mv.mod_id = $1 AND mv.version = $2 AND mvs.status = 'accepted'",
431+
WHERE mv.mod_id = $1 AND mv.version = $2 AND mvs.status = 'accepted'"#,
428432
id,
429433
version
430434
)

0 commit comments

Comments
 (0)