59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
use heromodels_core::{BaseModelData, Model};
|
|
use heromodels_derive::model;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
// 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]
|
|
pub struct CustomUser {
|
|
pub base_data: BaseModelData,
|
|
|
|
#[index(name = "user_name")]
|
|
pub login_name: String,
|
|
|
|
#[index]
|
|
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());
|
|
}
|