use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(test, derive(Default))]
pub struct User {
#[serde(rename = "$id")]
pub id: String,
#[serde(rename = "$createdAt")]
pub created_at: String,
#[serde(rename = "$updatedAt")]
pub updated_at: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "password")]
#[serde(skip_serializing_if = "Option::is_none")]
pub password: Option<String>,
#[serde(rename = "hash")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hash: Option<String>,
#[serde(rename = "hashOptions")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hash_options: Option<serde_json::Value>,
#[serde(rename = "registration")]
pub registration: String,
#[serde(rename = "status")]
pub status: bool,
#[serde(rename = "labels")]
pub labels: Vec<String>,
#[serde(rename = "passwordUpdate")]
pub password_update: String,
#[serde(rename = "email")]
pub email: String,
#[serde(rename = "phone")]
pub phone: String,
#[serde(rename = "emailVerification")]
pub email_verification: bool,
#[serde(rename = "phoneVerification")]
pub phone_verification: bool,
#[serde(rename = "mfa")]
pub mfa: bool,
#[serde(rename = "prefs")]
pub prefs: crate::models::Preferences,
#[serde(rename = "targets")]
pub targets: Vec<crate::models::Target>,
#[serde(rename = "accessedAt")]
pub accessed_at: String,
#[serde(rename = "impersonator")]
#[serde(skip_serializing_if = "Option::is_none")]
pub impersonator: Option<bool>,
#[serde(rename = "impersonatorUserId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub impersonator_user_id: Option<String>,
}
impl User {
pub fn id(&self) -> &String {
&self.id
}
pub fn created_at(&self) -> &String {
&self.created_at
}
pub fn updated_at(&self) -> &String {
&self.updated_at
}
pub fn name(&self) -> &String {
&self.name
}
pub fn set_password(mut self, password: String) -> Self {
self.password = Some(password);
self
}
pub fn password(&self) -> Option<&String> {
self.password.as_ref()
}
pub fn set_hash(mut self, hash: String) -> Self {
self.hash = Some(hash);
self
}
pub fn hash(&self) -> Option<&String> {
self.hash.as_ref()
}
pub fn set_hash_options(mut self, hash_options: serde_json::Value) -> Self {
self.hash_options = Some(hash_options);
self
}
pub fn hash_options(&self) -> Option<&serde_json::Value> {
self.hash_options.as_ref()
}
pub fn registration(&self) -> &String {
&self.registration
}
pub fn status(&self) -> &bool {
&self.status
}
pub fn labels(&self) -> &Vec<String> {
&self.labels
}
pub fn password_update(&self) -> &String {
&self.password_update
}
pub fn email(&self) -> &String {
&self.email
}
pub fn phone(&self) -> &String {
&self.phone
}
pub fn email_verification(&self) -> &bool {
&self.email_verification
}
pub fn phone_verification(&self) -> &bool {
&self.phone_verification
}
pub fn mfa(&self) -> &bool {
&self.mfa
}
pub fn prefs(&self) -> &crate::models::Preferences {
&self.prefs
}
pub fn targets(&self) -> &Vec<crate::models::Target> {
&self.targets
}
pub fn accessed_at(&self) -> &String {
&self.accessed_at
}
pub fn set_impersonator(mut self, impersonator: bool) -> Self {
self.impersonator = Some(impersonator);
self
}
pub fn impersonator(&self) -> Option<&bool> {
self.impersonator.as_ref()
}
pub fn set_impersonator_user_id(mut self, impersonator_user_id: String) -> Self {
self.impersonator_user_id = Some(impersonator_user_id);
self
}
pub fn impersonator_user_id(&self) -> Option<&String> {
self.impersonator_user_id.as_ref()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_user_creation() {
let _model = <User as Default>::default();
let _ = _model.id();
let _ = _model.created_at();
let _ = _model.updated_at();
let _ = _model.name();
let _ = _model.registration();
let _ = _model.status();
let _ = _model.labels();
let _ = _model.password_update();
let _ = _model.email();
let _ = _model.phone();
let _ = _model.email_verification();
let _ = _model.phone_verification();
let _ = _model.mfa();
let _ = _model.prefs();
let _ = _model.targets();
let _ = _model.accessed_at();
}
#[test]
fn test_user_serialization() {
let model = <User as Default>::default();
let json = serde_json::to_string(&model);
assert!(json.is_ok());
let deserialized: Result<User, _> = serde_json::from_str(&json.unwrap());
assert!(deserialized.is_ok());
}
}