Skip to content

Commit 6fec5a5

Browse files
committed
return version dates in api
1 parent 8c715d4 commit 6fec5a5

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

src/types/models/mod_entity.rs

+5
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ struct ModRecordGetOne {
8989
changelog: Option<String>,
9090
created_at: DateTime<Utc>,
9191
updated_at: DateTime<Utc>,
92+
mod_version_created_at: Option<DateTime<Utc>>,
93+
mod_version_updated_at: Option<DateTime<Utc>>,
9294
info: Option<String>,
9395
}
9496

@@ -579,6 +581,7 @@ impl Mod {
579581
r#"SELECT
580582
m.id, m.repository, m.about, m.changelog, m.featured, m.download_count as mod_download_count, m.created_at, m.updated_at,
581583
mv.id as version_id, mv.name, mv.description, mv.version, mv.download_link, mv.download_count as mod_version_download_count,
584+
mv.created_at as mod_version_created_at, mv.updated_at as mod_version_updated_at,
582585
mv.hash, mv.geode, mv.early_load, mv.api, mv.mod_id, mvs.status as "status: _", mvs.info
583586
FROM mods m
584587
INNER JOIN mod_versions mv ON m.id = mv.mod_id
@@ -623,6 +626,8 @@ impl Mod {
623626
tags: None,
624627
dependencies: None,
625628
incompatibilities: None,
629+
created_at: x.mod_version_created_at.map(|x| x.to_rfc3339_opts(SecondsFormat::Secs, true)),
630+
updated_at: x.mod_version_updated_at.map(|x| x.to_rfc3339_opts(SecondsFormat::Secs, true)),
626631
direct_download_link: Some(x.download_link.clone()),
627632
info: x.info.clone(),
628633
})

src/types/models/mod_version.rs

+21-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use std::collections::HashMap;
22

3-
use chrono::Utc;
3+
use chrono::SecondsFormat;
44
use semver::Version;
55
use serde::Serialize;
6-
use sqlx::{PgConnection, Postgres, QueryBuilder, Row};
6+
use sqlx::{
7+
types::chrono::{DateTime, Utc},
8+
PgConnection, Postgres, QueryBuilder, Row
9+
};
710

811
use crate::types::{
912
api::{create_download_link, ApiError, PaginatedData},
@@ -41,6 +44,9 @@ pub struct ModVersion {
4144
pub developers: Option<Vec<Developer>>,
4245
pub tags: Option<Vec<String>>,
4346

47+
pub created_at: Option<String>,
48+
pub updated_at: Option<String>,
49+
4450
#[serde(default, skip_serializing_if = "Option::is_none")]
4551
/// Admin/developer only - Reason given to status
4652
pub info: Option<String>,
@@ -63,6 +69,8 @@ struct ModVersionGetOne {
6369
api: bool,
6470
mod_id: String,
6571
status: ModVersionStatusEnum,
72+
created_at: Option<DateTime<Utc>>,
73+
updated_at: Option<DateTime<Utc>>,
6674
#[sqlx(default)]
6775
info: Option<String>,
6876
}
@@ -108,6 +116,8 @@ impl ModVersionGetOne {
108116
incompatibilities: None,
109117
info: self.info,
110118
direct_download_link: None,
119+
created_at: self.created_at.map(|x| x.to_rfc3339_opts(SecondsFormat::Secs, true)),
120+
updated_at: self.updated_at.map(|x| x.to_rfc3339_opts(SecondsFormat::Secs, true)),
111121
}
112122
}
113123
}
@@ -298,10 +308,10 @@ impl ModVersion {
298308

299309
let mut builder: QueryBuilder<Postgres> = QueryBuilder::new(
300310
r#"SELECT q.name, q.id, q.description, q.version, q.download_link, q.hash, q.geode, q.download_count,
301-
q.early_load, q.api, q.mod_id, q.status FROM (
311+
q.early_load, q.api, q.mod_id, q.status, q.created_at, q.updated_at FROM (
302312
SELECT
303313
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count, mvs.status,
304-
mv.early_load, mv.api, mv.mod_id, row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
314+
mv.early_load, mv.api, mv.mod_id, mv.created_at, mv.updated_at, row_number() over (partition by m.id order by mv.id desc) rn FROM mods m
305315
INNER JOIN mod_versions mv ON m.id = mv.mod_id
306316
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
307317
INNER JOIN mod_gd_versions mgv ON mgv.mod_id = mv.id
@@ -398,7 +408,7 @@ impl ModVersion {
398408
let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
399409
r#"SELECT DISTINCT
400410
mv.name, mv.id, mv.description, mv.version, mv.download_link, mv.hash, mv.geode, mv.download_count,
401-
mv.early_load, mv.api, mv.mod_id, mvs.status FROM mod_versions mv
411+
mv.early_load, mv.api, mv.mod_id, mv.created_at, mv.updated_at, mvs.status FROM mod_versions mv
402412
INNER JOIN mod_version_statuses mvs ON mvs.mod_version_id = mv.id
403413
WHERE mvs.status = 'pending' AND mv.mod_id IN ("#,
404414
);
@@ -441,11 +451,12 @@ impl ModVersion {
441451
let mut query_builder: QueryBuilder<Postgres> = QueryBuilder::new(
442452
r#"SELECT q.name, q.id, q.description, q.version, q.download_link,
443453
q.hash, q.geode, q.download_count,
444-
q.early_load, q.api, q.mod_id, q.status
454+
q.early_load, q.api, q.mod_id, q.status,
455+
q.created_at, q.updated_at
445456
FROM (
446457
SELECT mv.name, mv.id, mv.description, mv.version, mv.download_link,
447458
mv.hash, mv.geode, mv.download_count, mvs.status,
448-
mv.early_load, mv.api, mv.mod_id,
459+
mv.early_load, mv.api, mv.mod_id, mv.created_at, mv.updated_at,
449460
row_number() over (partition by m.id order by mv.id desc) rn
450461
FROM mods m
451462
INNER JOIN mod_versions mv ON m.id = mv.mod_id
@@ -489,7 +500,7 @@ impl ModVersion {
489500
return Err(ApiError::NotFound("".to_string()));
490501
}
491502
Err(e) => {
492-
log::info!("{:?}", e);
503+
log::error!("{:?}", e);
493504
return Err(ApiError::DbError);
494505
}
495506
};
@@ -626,7 +637,8 @@ impl ModVersion {
626637
ModVersionGetOne,
627638
r#"SELECT mv.id, mv.name, mv.description, mv.version,
628639
mv.download_link, mv.download_count,
629-
mv.hash, mv.geode, mv.early_load, mv.api,
640+
mv.hash, mv.geode, mv.early_load, mv.api,
641+
mv.created_at, mv.updated_at,
630642
mv.mod_id, mvs.status as "status: _", mvs.info
631643
FROM mod_versions mv
632644
INNER JOIN mods m ON m.id = mv.mod_id

0 commit comments

Comments
 (0)