use serde::{Deserialize, Serialize};
use tardis::basic::field::TrimString;
use tardis::chrono::{DateTime, Utc};
use tardis::db::sea_orm;
use tardis::web::poem_openapi;
use crate::rbum::rbum_enumeration::RbumScopeLevelKind;
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object)]
pub struct RbumItemAddReq {
#[oai(validator(min_length = "2", max_length = "255"))]
pub id: Option<TrimString>,
#[oai(validator(min_length = "2", max_length = "255"))]
pub code: Option<TrimString>,
#[oai(validator(min_length = "2", max_length = "255"))]
pub name: TrimString,
#[oai(validator(min_length = "2", max_length = "255"))]
pub rel_rbum_kind_id: String,
#[oai(validator(min_length = "2", max_length = "255"))]
pub rel_rbum_domain_id: String,
pub scope_level: Option<RbumScopeLevelKind>,
pub disabled: Option<bool>,
}
impl Default for RbumItemAddReq {
fn default() -> Self {
Self {
id: Default::default(),
code: Default::default(),
name: TrimString::from(""),
rel_rbum_kind_id: Default::default(),
rel_rbum_domain_id: Default::default(),
scope_level: Default::default(),
disabled: Default::default(),
}
}
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(default)]
pub struct RbumItemKernelAddReq {
pub id: Option<TrimString>,
pub code: Option<TrimString>,
pub name: TrimString,
pub rel_rbum_kind_id: Option<String>,
pub rel_rbum_domain_id: Option<String>,
pub scope_level: Option<RbumScopeLevelKind>,
pub disabled: Option<bool>,
}
impl Default for RbumItemKernelAddReq {
fn default() -> Self {
Self {
id: None,
code: None,
name: TrimString("".to_string()),
rel_rbum_kind_id: None,
rel_rbum_domain_id: None,
scope_level: None,
disabled: None,
}
}
}
#[derive(Serialize, Deserialize, Debug, Default)]
#[serde(default)]
pub struct RbumItemKernelModifyReq {
pub code: Option<TrimString>,
pub name: Option<TrimString>,
pub scope_level: Option<RbumScopeLevelKind>,
pub disabled: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object, sea_orm::FromQueryResult)]
pub struct RbumItemSummaryResp {
pub id: String,
pub code: String,
pub name: String,
pub rel_rbum_kind_id: String,
pub rel_rbum_domain_id: String,
pub own_paths: String,
pub owner: String,
pub create_time: DateTime<Utc>,
pub update_time: DateTime<Utc>,
pub scope_level: RbumScopeLevelKind,
pub disabled: bool,
}
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object, sea_orm::FromQueryResult)]
pub struct RbumItemDetailResp {
pub id: String,
pub code: String,
pub name: String,
pub rel_rbum_kind_id: String,
pub rel_rbum_kind_name: String,
pub rel_rbum_domain_id: String,
pub rel_rbum_domain_name: String,
pub own_paths: String,
pub owner: String,
pub owner_name: Option<String>,
pub create_time: DateTime<Utc>,
pub update_time: DateTime<Utc>,
pub scope_level: RbumScopeLevelKind,
pub disabled: bool,
}