2022-08-10 02:43:22 +00:00

117 lines
3.6 KiB
Rust

//!
//!
use crate::repositories::{
member::models::Member as _Member, member::schema::MemberState as _MemberState,
member_class::models::MemberClass as _MemberClass,
member_level::models::MemberLevel as _MemberLevel, site::models::Site as _Site,
};
use diesel::deserialize::QueryableByName;
///
#[derive(Eq, Hash, PartialEq, Debug, Clone)]
pub struct Member {
///
pub id: uuid::Uuid,
///
pub site: _Site,
///
pub member_class: _MemberClass,
///
pub member_level: _MemberLevel,
///
pub username: String,
///
pub password: String,
///
pub nickname: String,
///
pub mobile_phone_number: Option<String>,
///
pub state: _MemberState,
///
pub state_changed_at: Option<i64>,
///
pub referrer_member: Option<_Member>,
///
pub referred_count: i64,
///
pub last_signined_ip: Option<String>,
///
pub last_signined_at: Option<i64>,
///
pub created_at: i64,
///
pub updated_at: i64,
///
pub deleted_at: Option<i64>,
}
impl QueryableByName<diesel::pg::Pg> for Member {
fn build<R: diesel::row::NamedRow<diesel::pg::Pg>>(row: &R) -> diesel::deserialize::Result<Self> {
let referrer_member = _Member {
id: row.get("_m_id")?,
site_id: row.get("_m_site_id")?,
member_class_id: row.get("_m_member_class_id")?,
member_level_id: row.get("_m_member_level_id")?,
username: row.get("_m_username")?,
password: row.get("_m_password")?,
nickname: row.get("_m_nickname")?,
mobile_phone_number: row.get("_m_mobile_phone_number")?,
state: row.get("_m_state")?,
state_changed_at: row.get("_m_state_changed_at")?,
referrer_member_id: row.get("_m_referrer_member_id")?,
referred_count: row.get("_m_referred_count")?,
last_signined_ip: row.get("_m_last_signined_ip")?,
last_signined_at: row.get("_m_last_signined_at")?,
created_at: row.get("_m_created_at")?,
updated_at: row.get("_m_updated_at")?,
deleted_at: row.get("_m_deleted_at")?,
};
Ok(Member {
id: row.get("m_id")?,
site: _Site {
id: row.get("s_id")?,
url: row.get("s_url")?,
name: row.get("s_name")?,
path: row.get("s_path")?,
show: row.get("s_show")?,
can_use: row.get("s_can_use")?,
memo: row.get("s_memo")?,
expires_at: row.get("s_expires_at")?,
created_at: row.get("s_created_at")?,
updated_at: row.get("s_updated_at")?,
},
member_class: _MemberClass {
id: row.get("mc_id")?,
parent_id: row.get("mc_parent_id")?,
name: row.get("mc_name")?,
created_at: row.get("mc_created_at")?,
updated_at: row.get("mc_updated_at")?,
deleted_at: row.get("mc_deleted_at")?,
},
member_level: _MemberLevel {
id: row.get("ml_id")?,
name: row.get("ml_name")?,
sort_order: row.get("ml_sort_order")?,
created_at: row.get("ml_created_at")?,
updated_at: row.get("ml_updated_at")?,
deleted_at: row.get("ml_deleted_at")?,
},
username: row.get("m_username")?,
password: row.get("m_password")?,
nickname: row.get("m_nickname")?,
mobile_phone_number: row.get("m_mobile_phone_number")?,
state: row.get("m_state")?,
state_changed_at: row.get("m_state_changed_at")?,
referrer_member: None,
referred_count: row.get("m_referred_count")?,
last_signined_ip: row.get("m_last_signined_ip")?,
last_signined_at: row.get("m_last_signined_at")?,
created_at: row.get("m_created_at")?,
updated_at: row.get("m_updated_at")?,
deleted_at: row.get("m_deleted_at")?,
})
}
}