@ -11,42 +11,60 @@ use serde::Serialize;
#[ derive(Debug, Serialize, Clone) ]
pub struct LocalUserView {
pub local_user : LocalUser ,
pub person : Person ,
pub counts : PersonAggregates ,
pub local_user : LocalUser ,
}
type LocalUserViewTuple = ( Person, PersonAggregates , LocalUser ) ;
type LocalUserViewTuple = ( LocalUser, Person, PersonAggregates ) ;
impl LocalUserView {
pub fn read _person ( conn : & PgConnection , person _id: i32 ) -> Result < Self , Error > {
let ( person, counts , local_user ) = person ::table
. find ( person _id)
. inner_join ( person _aggregates ::table )
. inner_join ( local_user::table )
pub fn read ( conn : & PgConnection , local_user _id: i32 ) -> Result < Self , Error > {
let ( local_user, person , counts ) = local_user ::table
. find ( local_user _id)
. inner_join ( person ::table )
. inner_join ( person_aggregates::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. select ( (
local_user ::all_columns ,
person ::all_columns ,
person_aggregates ::all_columns ,
local_user ::all_columns ,
) )
. first ::< LocalUserViewTuple > ( conn ) ? ;
Ok ( Self {
local_user ,
person ,
counts ,
} )
}
pub fn read_person ( conn : & PgConnection , person_id : i32 ) -> Result < Self , Error > {
let ( local_user , person , counts ) = local_user ::table
. filter ( person ::id . eq ( person_id ) )
. inner_join ( person ::table )
. inner_join ( person_aggregates ::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. select ( (
local_user ::all_columns ,
person ::all_columns ,
person_aggregates ::all_columns ,
) )
. first ::< LocalUserViewTuple > ( conn ) ? ;
Ok ( Self {
local_user ,
person ,
counts ,
} )
}
// TODO check where this is used
pub fn read_from_name ( conn : & PgConnection , name : & str ) -> Result < Self , Error > {
let ( person , counts , local_user ) = person ::table
let ( local_user, person , counts ) = local_user ::table
. filter ( person ::name . eq ( name ) )
. inner_join ( person_aggregates ::table )
. inner_join ( local_user ::table )
. inner_join ( person ::table )
. inner_join ( person_aggregates::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. select ( (
local_user ::all_columns ,
person ::all_columns ,
person_aggregates ::all_columns ,
local_user ::all_columns ,
) )
. first ::< LocalUserViewTuple > ( conn ) ? ;
Ok ( Self {
@ -57,18 +75,18 @@ impl LocalUserView {
}
pub fn find_by_email_or_name ( conn : & PgConnection , name_or_email : & str ) -> Result < Self , Error > {
let ( person, counts , local_user ) = person ::table
. inner_join ( person _aggregates ::table )
. inner_join ( local_user::table )
let ( local_user, person , counts ) = local_user ::table
. inner_join ( person ::table )
. inner_join ( person_aggregates::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. filter (
person ::name
. ilike ( name_or_email )
. or ( local_user ::email . ilike ( name_or_email ) ) ,
)
. select ( (
local_user ::all_columns ,
person ::all_columns ,
person_aggregates ::all_columns ,
local_user ::all_columns ,
) )
. first ::< LocalUserViewTuple > ( conn ) ? ;
Ok ( Self {
@ -79,14 +97,14 @@ impl LocalUserView {
}
pub fn find_by_email ( conn : & PgConnection , from_email : & str ) -> Result < Self , Error > {
let ( person, counts , local_user ) = person ::table
. inner_join ( person _aggregates ::table )
. inner_join ( local_user::table )
let ( local_user, person , counts ) = local_user ::table
. inner_join ( person ::table )
. inner_join ( person_aggregates::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. filter ( local_user ::email . eq ( from_email ) )
. select ( (
local_user ::all_columns ,
person ::all_columns ,
person_aggregates ::all_columns ,
local_user ::all_columns ,
) )
. first ::< LocalUserViewTuple > ( conn ) ? ;
Ok ( Self {
@ -99,23 +117,23 @@ impl LocalUserView {
#[ derive(Debug, Serialize, Clone) ]
pub struct LocalUserSettingsView {
pub local_user : LocalUserSettings ,
pub person : PersonSafe ,
pub counts : PersonAggregates ,
pub local_user : LocalUserSettings ,
}
type LocalUserSettingsViewTuple = ( PersonSafe, PersonAggregate s, LocalUserSetting s) ;
type LocalUserSettingsViewTuple = ( LocalUserSettings, PersonSafe, PersonAggregate s) ;
impl LocalUserSettingsView {
pub fn read ( conn : & PgConnection , person _id: i32 ) -> Result < Self , Error > {
let ( person, counts , local_user ) = person ::table
. find ( person _id)
. inner_join ( person _aggregates ::table )
. inner_join ( local_user::table )
pub fn read ( conn : & PgConnection , local_user _id: i32 ) -> Result < Self , Error > {
let ( local_user, person , counts ) = local_user ::table
. find ( local_user _id)
. inner_join ( person ::table )
. inner_join ( person_aggregates::table . on ( person ::id . eq ( person_aggregates ::person_id ) ) )
. select ( (
LocalUser ::safe_settings_columns_tuple ( ) ,
Person ::safe_columns_tuple ( ) ,
person_aggregates ::all_columns ,
LocalUser ::safe_settings_columns_tuple ( ) ,
) )
. first ::< LocalUserSettingsViewTuple > ( conn ) ? ;
Ok ( Self {