diff options
| author | Santo Cariotti <santo@dcariotti.me> | 2022-09-12 12:13:18 +0000 |
|---|---|---|
| committer | Santo Cariotti <santo@dcariotti.me> | 2022-09-12 12:13:18 +0000 |
| commit | 74fa5cd55032b45413c08b19b9b8060a992194e9 (patch) | |
| tree | d20d4dc760decee6008505f23a17fc7a3f5f6d41 | |
| parent | 56e50564e87cc764fc5b815f19aa56560f78e4d3 (diff) | |
Show uploads array for model
| -rw-r--r-- | src/models/model.rs | 22 |
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, |
