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 RbumSetCateAddReq {
#[oai(validator(min_length = "2", max_length = "255"))]
pub bus_code: TrimString,
#[oai(validator(min_length = "2", max_length = "255"))]
pub name: TrimString,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub icon: Option<String>,
pub sort: Option<i64>,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub ext: Option<String>,
#[oai(validator(min_length = "2", max_length = "255"))]
pub rel_rbum_set_id: String,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub rbum_parent_cate_id: Option<String>,
pub scope_level: Option<RbumScopeLevelKind>,
}
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object)]
pub struct RbumSetCateModifyReq {
#[oai(validator(min_length = "2", max_length = "255"))]
pub bus_code: Option<TrimString>,
#[oai(validator(min_length = "2", max_length = "255"))]
pub name: Option<TrimString>,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub icon: Option<String>,
pub sort: Option<i64>,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub ext: Option<String>,
#[oai(validator(min_length = "2", max_length = "1000"))]
pub rbum_parent_cate_id: Option<String>,
pub scope_level: Option<RbumScopeLevelKind>,
}
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object, sea_orm::FromQueryResult)]
pub struct RbumSetCateSummaryResp {
pub id: String,
pub sys_code: String,
pub bus_code: String,
pub name: String,
pub icon: String,
pub sort: i64,
pub ext: String,
pub rel_rbum_set_id: String,
pub own_paths: String,
pub owner: String,
pub create_time: DateTime<Utc>,
pub update_time: DateTime<Utc>,
pub scope_level: RbumScopeLevelKind,
}
#[derive(Serialize, Deserialize, Debug, poem_openapi::Object, sea_orm::FromQueryResult)]
pub struct RbumSetCateDetailResp {
pub id: String,
pub sys_code: String,
pub bus_code: String,
pub name: String,
pub icon: String,
pub sort: i64,
pub ext: String,
pub rel_rbum_set_id: 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,
}