176 lines
5.5 KiB
Plaintext
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!");
|