Attribute Macro metamorphose::Model [−][src]
#[Model]
Expand description
Macro for converting Structure to mango-orm Model. The model can access the database. The model can create, update, and delete documents in collections.
Example:
use mango_orm::*;
use metamorphose::Model;
use serde::{Deserialize, Serialize};
// Get settings of service/sub-application.
use crate::settings::{
default::{DATABASE_NAME, DB_CLIENT_NAME, DB_QUERY_DOCS_LIMIT, SERVICE_NAME},
PROJECT_NAME, UNIQUE_PROJECT_KEY,
};
#[Model(
is_del_docs = false,
is_use_add_valid = true,
ignore_fields = "confirm_password"
)]
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct AdminProfile {
#[serde(default)]
#[field_attrs(
widget = "inputText",
label = "Username",
placeholder = "Enter your username",
unique = true,
required = true,
maxlength = 150,
hint = "Valid characters: a-z A-Z 0-9 _ @ + .<br>Max size: 150"
)]
pub username: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputImage",
label = "Photo",
value = r#"{
"path":"./media/no_avatar.png",
"url":"/media/no_avatar.png"
}"#,
placeholder = "Upload your photo",
accept = "image/jpeg,image/png",
hint = "Image in JPEG or PNG format",
thumbnails = r#"[["xs",150],["sm",300]]"#
)]
pub photo: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputText",
label = "First name",
placeholder = "Enter your First name",
maxlength = 150
)]
pub first_name: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputText",
label = "Last name",
placeholder = "Enter your Last name",
maxlength = 150
)]
pub last_name: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputEmail",
label = "E-mail",
placeholder = "Please enter your email",
required = true,
unique = true,
maxlength = 320,
hint = "Your actual E-mail"
)]
pub email: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputPhone",
label = "Phone number",
placeholder = "Please enter your phone number",
unique = true,
maxlength = 30,
hint = "Your actual phone number"
)]
pub phone: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputPassword",
label = "Password",
placeholder = "Enter your password",
required = true,
minlength = 8,
hint = "Valid characters: a-z A-Z 0-9 @ # $ % ^ & + = * ! ~ ) (<br>Min size: 8"
)]
pub password: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "inputPassword",
label = "Confirm password",
placeholder = "Repeat your password",
required = true,
minlength = 8,
hint = "Repeat your password"
)]
pub confirm_password: Option<String>,
//
#[serde(default)]
#[field_attrs(
widget = "checkBox",
label = "is staff?",
hint = "User can access the admin site?"
)]
pub is_staff: Option<bool>,
//
#[serde(default)]
#[field_attrs(
widget = "checkBox",
label = "is active?",
hint = "Is this an active account?"
)]
pub is_active: Option<bool>,
}