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()); }