Files
icarus_models/src/user.rs
phoenix 1c1826ff32
All checks were successful
Rust Build / Test Suite (pull_request) Successful in 36s
Release Tagging / release (pull_request) Successful in 38s
Rust Build / Check (pull_request) Successful in 49s
Rust Build / Rustfmt (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Successful in 51s
Rust Build / build (pull_request) Successful in 43s
tsk-57: Added schema to models
2025-08-19 18:24:55 -04:00

88 lines
2.5 KiB
Rust

use std::default::Default;
use crate::init;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)]
pub struct User {
#[serde(skip_serializing_if = "init::is_uuid_nil")]
pub id: uuid::Uuid,
#[serde(skip_serializing_if = "String::is_empty")]
pub username: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub password: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub email: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub phone: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub firstname: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub lastname: String,
pub email_verified: bool,
#[serde(with = "time::serde::rfc3339::option")]
pub date_created: Option<time::OffsetDateTime>,
#[serde(skip_serializing_if = "String::is_empty")]
pub status: String,
#[serde(with = "time::serde::rfc3339::option")]
pub last_login: Option<time::OffsetDateTime>,
#[serde(skip_serializing_if = "init::is_uuid_nil")]
pub salt_id: uuid::Uuid,
}
impl Default for User {
fn default() -> Self {
User {
id: uuid::Uuid::new_v4(),
username: String::new(),
password: String::new(),
email: String::new(),
phone: String::new(),
firstname: String::new(),
lastname: String::new(),
email_verified: false,
date_created: None,
status: String::new(),
last_login: None,
salt_id: uuid::Uuid::nil(),
}
}
}
impl User {
pub fn to_json(&self, output_pretty: bool) -> Result<String, serde_json::Error> {
if output_pretty {
serde_json::to_string_pretty(&self)
} else {
serde_json::to_string(&self)
}
}
}
pub mod salt {
use std::default::Default;
use crate::init;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct Salt {
#[serde(skip_serializing_if = "init::is_uuid_nil")]
pub id: uuid::Uuid,
#[serde(skip_serializing_if = "String::is_empty")]
pub salt: String,
}
impl Salt {
pub fn to_json(&self, output_pretty: bool) -> Result<String, serde_json::Error> {
if output_pretty {
serde_json::to_string_pretty(&self)
} else {
serde_json::to_string(&self)
}
}
}
}