1 use crate::structs::LocalUserDiscussionLanguageView;
2 use diesel::{result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
5 schema::{language, local_user, local_user_language},
8 local_user::{LocalUser, LocalUserSettings},
10 traits::ToSafeSettings,
13 type LocalUserDiscussionLanguageViewTuple = (LocalUserSettings, Language);
15 impl LocalUserDiscussionLanguageView {
16 pub fn read_languages(
18 local_user_id: LocalUserId,
19 ) -> Result<Vec<Language>, Error> {
20 let res = local_user_language::table
21 .inner_join(local_user::table)
22 .inner_join(language::table)
24 LocalUser::safe_settings_columns_tuple(),
25 language::all_columns,
27 .filter(local_user::id.eq(local_user_id))
28 .load::<LocalUserDiscussionLanguageViewTuple>(conn)?;
30 Ok(res.into_iter().map(|a| a.1).collect::<Vec<Language>>())