117 lines
3.6 KiB
Rust
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")?,
|
|
})
|
|
}
|
|
}
|