use serde::Deserialize;
use serde::Serialize;
use bmbp_macro::{Orm, PoVo};
#[derive(PoVo, Orm)]
pub struct A {
pub name: String,
pub old: String,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct BaseVoPo {
r_id: String,
r_level: String,
r_flag: String,
r_create_time: String,
r_create_user: String,
r_update_time: String,
r_update_user: String,
r_owner_org: String,
r_owner_user: String,
r_sign: String,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize, Orm)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct BmbpOrganVo {
organ_id: String,
parent_organ_id: String,
organ_title: String,
organ_path: String,
organ_data_id: String,
organ_type: String,
children: Vec<BmbpOrganVo>,
#[serde(flatten)]
base: BaseVoPo,
}
#[test]
fn test_derive_model() {
let c = A::orm_fields();
println!("xxx:{:#?}", c);
let mut na = A {
name: "X".to_string(),
old: "Y".to_string(),
};
na.set_name("X1".to_string()).set_old("GG".to_string());
assert_eq!(&"X1".to_string(), na.get_name());
let name: &mut String = na.get_mut_name();
name.push_str("ABC");
assert_eq!(&"X1ABC".to_string(), na.get_name());
}
#[test]
fn test_nest_vo() {
let _organ = BmbpOrganVo::default();
let organ_columns = BmbpOrganVo::orm_fields();
println!("====>{:#?}", organ_columns);
}