summaryrefslogtreecommitdiffstats
path: root/src/models/model.rs
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-09-12 12:13:18 +0000
committerSanto Cariotti <santo@dcariotti.me>2022-09-12 12:13:18 +0000
commit74fa5cd55032b45413c08b19b9b8060a992194e9 (patch)
treed20d4dc760decee6008505f23a17fc7a3f5f6d41 /src/models/model.rs
parent56e50564e87cc764fc5b815f19aa56560f78e4d3 (diff)
Show uploads array for model
Diffstat (limited to 'src/models/model.rs')
-rw-r--r--src/models/model.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/models/model.rs b/src/models/model.rs
index 0336c20..5b47f5c 100644
--- a/src/models/model.rs
+++ b/src/models/model.rs
@@ -52,6 +52,7 @@ pub struct ModelUser {
created: NaiveDateTime,
updated: NaiveDateTime,
author: Option<JsonValue>,
+ uploads: Option<JsonValue>,
}
#[derive(Deserialize, Serialize)]
@@ -130,9 +131,13 @@ impl Model {
r#"
SELECT
models.*,
- json_build_object('id', users.id, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff) as author
- FROM models JOIN users ON users.id = models.author_id
+ json_build_object('id', users.id, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff) as author,
+ json_agg(uploads.*) as uploads
+ FROM models
+ JOIN users ON users.id = models.author_id
+ JOIN uploads ON uploads.model_id = models.id
WHERE models.id = $1
+ GROUP BY models.id, users.id
"#,
model_id
)
@@ -147,10 +152,15 @@ impl Model {
let pool = unsafe { get_client() };
let rows = sqlx::query_as!(
ModelUser,
- r#"SELECT
- models.*,
- json_build_object('id', users.id, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff) as author
- FROM models JOIN users ON users.id = models.author_id
+ r#"
+ SELECT
+ models.*,
+ json_build_object('id', users.id, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff) as author,
+ json_agg(uploads.*) as uploads
+ FROM models
+ JOIN users ON users.id = models.author_id
+ JOIN uploads ON uploads.model_id = models.id
+ GROUP BY models.id, users.id
LIMIT $1 OFFSET $2
"#,
PAGE_LIMIT,