This commit is contained in:
2024-12-24 23:02:42 +01:00
parent 2a44308602
commit 919593ab2d
2 changed files with 25 additions and 17 deletions

View File

@@ -38,11 +38,14 @@ async fn get_users(pagination: Query<Pagination>, db: Database) -> impl IntoResp
user_settings.first_name, user_settings.first_name,
user_settings.username, user_settings.username,
user_settings.source, user_settings.source,
ARRAY_AGG(( COALESCE(
languages.id, JSON_AGG(JSON_BUILD_OBJECT(
languages.label, 'id', languages.id,
languages.code 'label', languages.label,
)) AS "allowed_langs: Vec<UserLanguage>" 'code', languages.code
)),
'[]'::JSON
) AS "allowed_langs!: Vec<UserLanguage>"
FROM user_settings FROM user_settings
LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN users_languages ON user_settings.id = users_languages.user
LEFT JOIN languages ON users_languages.language = languages.id LEFT JOIN languages ON users_languages.language = languages.id
@@ -72,11 +75,14 @@ async fn get_user(Path(user_id): Path<i64>, db: Database) -> impl IntoResponse {
user_settings.first_name, user_settings.first_name,
user_settings.username, user_settings.username,
user_settings.source, user_settings.source,
ARRAY_AGG(( COALESCE(
languages.id, JSON_AGG(JSON_BUILD_OBJECT(
languages.label, 'id', languages.id,
languages.code 'label', languages.label,
)) AS "allowed_langs: Vec<UserLanguage>" 'code', languages.code
)),
'[]'::JSON
) AS "allowed_langs!: Vec<UserLanguage>"
FROM user_settings FROM user_settings
LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN users_languages ON user_settings.id = users_languages.user
LEFT JOIN languages ON users_languages.language = languages.id 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.first_name,
user_settings.username, user_settings.username,
user_settings.source, user_settings.source,
ARRAY_AGG(( COALESCE(
languages.id, JSON_AGG(JSON_BUILD_OBJECT(
languages.label, 'id', languages.id,
languages.code 'label', languages.label,
)) AS "allowed_langs: Vec<UserLanguage>" 'code', languages.code
)),
'[]'::JSON
) AS "allowed_langs!: Vec<UserLanguage>"
FROM user_settings FROM user_settings
LEFT JOIN users_languages ON user_settings.id = users_languages.user LEFT JOIN users_languages ON user_settings.id = users_languages.user
LEFT JOIN languages ON users_languages.language = languages.id LEFT JOIN languages ON users_languages.language = languages.id

View File

@@ -25,8 +25,7 @@ pub struct UserDetail {
pub first_name: String, pub first_name: String,
pub username: String, pub username: String,
pub source: String, pub source: String,
#[serde(default)] pub allowed_langs: Vec<UserLanguage>,
pub allowed_langs: Option<Vec<UserLanguage>>,
} }
#[derive(Deserialize)] #[derive(Deserialize)]