From 09447097adcfbd31f28dc686ec43380b9006ac9e Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 3 Oct 2022 20:37:08 +0200 Subject: Show likes as array --- src/models/model.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/models/model.rs b/src/models/model.rs index 98ee8d4..47864d9 100644 --- a/src/models/model.rs +++ b/src/models/model.rs @@ -54,6 +54,7 @@ pub struct ModelUser { updated: NaiveDateTime, author: Option, uploads: Option, + likes: Option, } #[derive(Deserialize, Serialize, sqlx::FromRow)] @@ -160,10 +161,12 @@ impl Model { SELECT models.*, json_build_object('id', users.id, 'name', users.name, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff, 'avatar', users.avatar) as author, - json_agg(uploads.*) filter (where uploads.* is not null) as uploads + json_agg(uploads.*) filter (where uploads.* is not null) as uploads, + json_agg(likes.*) filter (where likes.* is not null) as likes FROM models JOIN users ON users.id = models.author_id LEFT JOIN uploads ON uploads.model_id = models.id + LEFT JOIN likes ON likes.model_id = models.id WHERE models.id = $1 GROUP BY models.id, users.id "#) @@ -182,10 +185,12 @@ impl Model { SELECT models.*, json_build_object('id', users.id, 'name', users.name, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff, 'avatar', users.avatar) as author, - json_agg(uploads.*) filter (where uploads.* is not null) as uploads + json_agg(uploads.*) filter (where uploads.* is not null) as uploads, + json_agg(likes.*) filter (where likes.* is not null) as likes FROM models JOIN users ON users.id = models.author_id LEFT JOIN uploads ON uploads.model_id = models.id + LEFT JOIN likes ON likes.model_id = models.id GROUP BY models.id, users.id ORDER BY id DESC LIMIT $1 OFFSET $2 @@ -206,10 +211,12 @@ impl Model { SELECT models.*, json_build_object('id', users.id, 'name', users.name, 'email', users.email, 'username', users.username, 'is_staff', users.is_staff, 'avatar', users.avatar) as author, - json_agg(uploads.*) filter (where uploads.* is not null) as uploads + json_agg(uploads.*) filter (where uploads.* is not null) as uploads, + json_agg(likes.*) filter (where likes.* is not null) as likes FROM models JOIN users ON users.id = models.author_id LEFT JOIN uploads ON uploads.model_id = models.id + LEFT JOIN likes ON likes.model_id = models.id WHERE author_id = $1 GROUP BY models.id, users.id ORDER BY id DESC -- cgit v1.2.3-71-g8e6c