From 919593ab2df0966bfcc674141783a69c4c56bfda Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Tue, 24 Dec 2024 23:02:42 +0100 Subject: [PATCH] Fix --- src/views/users/mod.rs | 39 +++++++++++++++++++++------------- src/views/users/serializers.rs | 3 +-- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/views/users/mod.rs b/src/views/users/mod.rs index 0db2aa7..0ae9d92 100644 --- a/src/views/users/mod.rs +++ b/src/views/users/mod.rs @@ -38,11 +38,14 @@ async fn get_users(pagination: Query, db: Database) -> impl IntoResp user_settings.first_name, user_settings.username, user_settings.source, - ARRAY_AGG(( - languages.id, - languages.label, - languages.code - )) AS "allowed_langs: Vec" + COALESCE( + JSON_AGG(JSON_BUILD_OBJECT( + 'id', languages.id, + 'label', languages.label, + 'code', languages.code + )), + '[]'::JSON + ) AS "allowed_langs!: Vec" FROM user_settings LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN languages ON users_languages.language = languages.id @@ -72,11 +75,14 @@ async fn get_user(Path(user_id): Path, db: Database) -> impl IntoResponse { user_settings.first_name, user_settings.username, user_settings.source, - ARRAY_AGG(( - languages.id, - languages.label, - languages.code - )) AS "allowed_langs: Vec" + COALESCE( + JSON_AGG(JSON_BUILD_OBJECT( + 'id', languages.id, + 'label', languages.label, + 'code', languages.code + )), + '[]'::JSON + ) AS "allowed_langs!: Vec" FROM user_settings LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN languages ON users_languages.language = languages.id @@ -131,11 +137,14 @@ async fn create_or_update_user( user_settings.first_name, user_settings.username, user_settings.source, - ARRAY_AGG(( - languages.id, - languages.label, - languages.code - )) AS "allowed_langs: Vec" + COALESCE( + JSON_AGG(JSON_BUILD_OBJECT( + 'id', languages.id, + 'label', languages.label, + 'code', languages.code + )), + '[]'::JSON + ) AS "allowed_langs!: Vec" FROM user_settings LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN languages ON users_languages.language = languages.id diff --git a/src/views/users/serializers.rs b/src/views/users/serializers.rs index 36f13ae..97dd719 100644 --- a/src/views/users/serializers.rs +++ b/src/views/users/serializers.rs @@ -25,8 +25,7 @@ pub struct UserDetail { pub first_name: String, pub username: String, pub source: String, - #[serde(default)] - pub allowed_langs: Option>, + pub allowed_langs: Vec, } #[derive(Deserialize)]