- Add PostgreSQL client functionality for database interactions. - Add Redis client functionality for cache and data store operations. - Extend Rhai scripting with PostgreSQL and Redis client modules. - Add documentation and test cases for both clients.
146 lines
4.3 KiB
Plaintext
146 lines
4.3 KiB
Plaintext
// PostgreSQL Authentication Example
|
|
//
|
|
// This example demonstrates how to use the PostgreSQL client module with authentication:
|
|
// - Create a PostgreSQL configuration with authentication
|
|
// - Connect to PostgreSQL using the configuration
|
|
// - Perform basic operations
|
|
//
|
|
// Prerequisites:
|
|
// - PostgreSQL server must be running
|
|
// - You need to know the username and password for the PostgreSQL server
|
|
|
|
// Helper function to check if PostgreSQL is available
|
|
fn is_postgres_available() {
|
|
try {
|
|
// Try to execute a simple connection
|
|
let connect_result = pg_connect();
|
|
return connect_result;
|
|
} catch(err) {
|
|
print(`PostgreSQL connection error: ${err}`);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Main function
|
|
fn main() {
|
|
print("=== PostgreSQL Authentication Example ===");
|
|
|
|
// Check if PostgreSQL is available
|
|
let postgres_available = is_postgres_available();
|
|
if !postgres_available {
|
|
print("PostgreSQL server is not available. Please check your connection settings.");
|
|
return;
|
|
}
|
|
|
|
print("✓ PostgreSQL server is available");
|
|
|
|
// Step 1: Create a PostgreSQL configuration with authentication
|
|
print("\n1. Creating PostgreSQL configuration with authentication...");
|
|
|
|
// Replace these values with your actual PostgreSQL credentials
|
|
let pg_host = "localhost";
|
|
let pg_port = 5432;
|
|
let pg_user = "postgres";
|
|
let pg_password = "your_password_here"; // Replace with your actual password
|
|
let pg_database = "postgres";
|
|
|
|
// Create a configuration builder
|
|
let config = pg_config_builder();
|
|
|
|
// Configure the connection
|
|
config = config.host(pg_host);
|
|
config = config.port(pg_port);
|
|
config = config.user(pg_user);
|
|
config = config.password(pg_password);
|
|
config = config.database(pg_database);
|
|
|
|
// Build the connection string
|
|
let connection_string = config.build_connection_string();
|
|
print(`✓ Created PostgreSQL configuration with connection string: ${connection_string}`);
|
|
|
|
// Step 2: Connect to PostgreSQL using the configuration
|
|
print("\n2. Connecting to PostgreSQL with authentication...");
|
|
|
|
try {
|
|
let connect_result = pg_connect_with_config(config);
|
|
if (connect_result) {
|
|
print("✓ Successfully connected to PostgreSQL with authentication");
|
|
} else {
|
|
print("✗ Failed to connect to PostgreSQL with authentication");
|
|
return;
|
|
}
|
|
} catch(err) {
|
|
print(`✗ Error connecting to PostgreSQL: ${err}`);
|
|
return;
|
|
}
|
|
|
|
// Step 3: Perform basic operations
|
|
print("\n3. Performing basic operations...");
|
|
|
|
// Create a test table
|
|
let table_name = "auth_example_table";
|
|
let create_table_query = `
|
|
CREATE TABLE IF NOT EXISTS ${table_name} (
|
|
id SERIAL PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
value INTEGER
|
|
)
|
|
`;
|
|
|
|
try {
|
|
let create_result = pg_execute(create_table_query);
|
|
print(`✓ Successfully created table ${table_name}`);
|
|
} catch(err) {
|
|
print(`✗ Error creating table: ${err}`);
|
|
return;
|
|
}
|
|
|
|
// Insert data
|
|
let insert_query = `
|
|
INSERT INTO ${table_name} (name, value)
|
|
VALUES ('test_name', 42)
|
|
`;
|
|
|
|
try {
|
|
let insert_result = pg_execute(insert_query);
|
|
print(`✓ Successfully inserted data into table ${table_name}`);
|
|
} catch(err) {
|
|
print(`✗ Error inserting data: ${err}`);
|
|
}
|
|
|
|
// Query data
|
|
let select_query = `
|
|
SELECT * FROM ${table_name}
|
|
`;
|
|
|
|
try {
|
|
let select_result = pg_query(select_query);
|
|
print(`✓ Successfully queried data from table ${table_name}`);
|
|
print(` Found ${select_result.len()} rows`);
|
|
|
|
// Display the results
|
|
for row in select_result {
|
|
print(` Row: id=${row.id}, name=${row.name}, value=${row.value}`);
|
|
}
|
|
} catch(err) {
|
|
print(`✗ Error querying data: ${err}`);
|
|
}
|
|
|
|
// Clean up
|
|
let drop_query = `
|
|
DROP TABLE IF EXISTS ${table_name}
|
|
`;
|
|
|
|
try {
|
|
let drop_result = pg_execute(drop_query);
|
|
print(`✓ Successfully dropped table ${table_name}`);
|
|
} catch(err) {
|
|
print(`✗ Error dropping table: ${err}`);
|
|
}
|
|
|
|
print("\nExample completed successfully!");
|
|
}
|
|
|
|
// Run the main function
|
|
main();
|