// Hero Models - Rhai Example Script println("Hero Models - Rhai Usage Example"); println("================================"); // Get the DB instance let db = get_db(); // Create a new user using the builder pattern println("Creating users..."); // Create user 1 let user1 = user_builder(1) .username("johndoe") .email("john.doe@example.com") .full_name("John Doe") .is_active(false); set_user(user1); // Create user 2 let user2 = user_builder(2) .username("janesmith") .email("jane.smith@example.com") .full_name("Jane Smith") .is_active(true); set_user(user2); // Create user 3 let user3 = user_builder(3) .username("willism") .email("willis.masters@example.com") .full_name("Willis Masters") .is_active(true); set_user(user3); // Create user 4 let user4 = user_builder(4) .username("carrols") .email("carrol.smith@example.com") .full_name("Carrol Smith") .is_active(false); set_user(user4); // Get user by ID println("\nRetrieving user by ID..."); let retrieved_user = get_user_by_id(1); if retrieved_user != () { // In Rhai, functions returning Option yield () for None println("Found user: " + retrieved_user.full_name + " (ID: " + retrieved_user.id + ")"); println("Username: " + retrieved_user.username); println("Email: " + retrieved_user.email); println("Active: " + retrieved_user.is_active); } else { println("User not found"); } // Get users by active status println("\nRetrieving active users..."); let all_users_for_active_check = get_all_users(); let active_users = []; // Filter active users for user_item in all_users_for_active_check { if user_item.is_active == true { active_users.push(user_item); } } println("Found " + active_users.len() + " active users:"); for user_item in active_users { println("- " + user_item.full_name + " (ID: " + user_item.id + ")"); } // Delete a user println("\nDeleting user..."); delete_user_by_id(2); // Get active users again println("\nRetrieving active users after deletion..."); let all_users_after_delete = get_all_users(); let active_users_after_delete = []; // Filter active users for user_item in all_users_after_delete { if user_item.is_active == true { active_users_after_delete.push(user_item); } } println("Found " + active_users_after_delete.len() + " active users:"); for user_item in active_users_after_delete { println("- " + user_item.full_name + " (ID: " + user_item.id + ")"); } // Get inactive users println("\nRetrieving inactive users..."); let all_users_for_inactive_check = get_all_users(); let inactive_users = []; // Filter inactive users for user_item in all_users_for_inactive_check { if user_item.is_active == false { inactive_users.push(user_item); } } println("Found " + inactive_users.len() + " inactive users:"); for user_item in inactive_users { println("- " + user_item.full_name + " (ID: " + user_item.id + ")"); } // Create a comment for user 1 println("\nCreating a comment..."); let comment1 = comment_builder(5) .user_id(1) .content("This is a comment on the user"); set_comment(comment1); // Get the comment println("\nRetrieving comment..."); let retrieved_comment = get_comment_by_id(5); if retrieved_comment != () { // In Rhai, functions returning Option yield () for None println("Found comment: " + retrieved_comment.content); println("Comment ID: " + retrieved_comment.id); println("User ID: " + retrieved_comment.user_id); } else { println("Comment not found"); } println("\nRetrieving optional active users (should be Some(Array) or Unit)..."); let optional_active_users = get_users_by_activity_status_optional(true); if optional_active_users == () { // Check for unit (None) println("No active users found (returned unit)."); } else { println("Found optional active users:"); for user in optional_active_users { println("- " + user.full_name + " (ID: " + user.id + ")"); } } println("\nRetrieving optional inactive users (should be Some(Array) or Unit)..."); let optional_inactive_users = get_users_by_activity_status_optional(false); if optional_inactive_users == () { // Check for unit (None) println("No inactive users found (returned unit)."); } else { println("Found optional inactive users:"); for user in optional_inactive_users { println("- " + user.full_name + " (ID: " + user.id + ")"); } } // To specifically test the None case from our Rust logic (empty vec for a status returns None) println("\nTesting None case for optional vector retrieval..."); println("Deleting all users to ensure empty states..."); let all_users_before_delete_all = get_all_users(); for user_to_delete in all_users_before_delete_all { delete_user_by_id(user_to_delete.id); } let optional_active_after_delete_all = get_users_by_activity_status_optional(true); if optional_active_after_delete_all == () { println("Correctly received unit for active users after deleting all."); } else { println("ERROR: Expected unit for active users after deleting all, but got an array."); print("Value received: " + optional_active_after_delete_all); } let optional_inactive_after_delete_all = get_users_by_activity_status_optional(false); if optional_inactive_after_delete_all == () { println("Correctly received unit for inactive users after deleting all."); } else { println("ERROR: Expected unit for inactive users after deleting all, but got an array."); print("Value received: " + optional_inactive_after_delete_all); } println("\nRhai example completed successfully!");