This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
rhaj/rhai_wrapper/examples/user_script.rhai
2025-05-13 02:00:35 +03:00

176 lines
5.5 KiB
Plaintext

// 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<T> 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<T> 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!");