58 lines
1.6 KiB
Rust
58 lines
1.6 KiB
Rust
use heromodels::model;
|
|
use heromodels::models::core::model::{BaseModelData, Model, Index, IndexKey};
|
|
use serde::{Serialize, Deserialize};
|
|
|
|
// Basic usage
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[model]
|
|
pub struct SimpleUser {
|
|
pub base_data: BaseModelData,
|
|
|
|
/// @index
|
|
pub login: String,
|
|
|
|
pub full_name: String,
|
|
}
|
|
|
|
// With customization options
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[model(prefix = "custom_user")]
|
|
pub struct CustomUser {
|
|
pub base_data: BaseModelData,
|
|
|
|
/// @index(name = "user_name", key_type = "str")
|
|
pub login_name: String,
|
|
|
|
/// @index(key_type = "bool")
|
|
pub is_active: bool,
|
|
|
|
pub full_name: String,
|
|
}
|
|
|
|
fn main() {
|
|
println!("Hero Models - Model Macro Example");
|
|
println!("=================================");
|
|
|
|
// Example usage of the generated implementations
|
|
println!("SimpleUser DB Prefix: {}", SimpleUser::db_prefix());
|
|
println!("CustomUser DB Prefix: {}", CustomUser::db_prefix());
|
|
|
|
let user = SimpleUser {
|
|
base_data: BaseModelData::new(1),
|
|
login: "johndoe".to_string(),
|
|
full_name: "John Doe".to_string(),
|
|
};
|
|
|
|
let custom_user = CustomUser {
|
|
base_data: BaseModelData::new(2),
|
|
login_name: "janesmith".to_string(),
|
|
is_active: true,
|
|
full_name: "Jane Smith".to_string(),
|
|
};
|
|
|
|
println!("\nSimpleUser ID: {}", user.get_id());
|
|
println!("SimpleUser DB Keys: {:?}", user.db_keys());
|
|
|
|
println!("\nCustomUser ID: {}", custom_user.get_id());
|
|
println!("CustomUser DB Keys: {:?}", custom_user.db_keys());
|
|
} |