From 74fa5cd55032b45413c08b19b9b8060a992194e9 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 12 Sep 2022 14:13:18 +0200 Subject: Show uploads array for model --- src/models/model.rs | 22 ++++++++++++++++------ 1 file 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, + uploads: Option, } #[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, -- cgit v1.2.3-71-g8e6c