Expand description
§PostgreSQL Manager
A comprehensive library for managing PostgreSQL installations on remote servers via SSH.
§Features
- Builder Pattern API: Fluent, type-safe configuration
- Idempotent Operations: Safe to run multiple times
- Diff Detection: Track configuration changes
- Full Lifecycle: Install, configure, update, and uninstall
- SSH-based: Uses ssh-manager for secure remote operations
- Error Handling: Comprehensive error types with context
§Quick Start
use lmrc_postgres::{PostgresConfig, PostgresManager};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build PostgreSQL configuration
let config = PostgresConfig::builder()
.version("15")
.database_name("myapp")
.username("myuser")
.password("secure_password")
.listen_addresses("0.0.0.0/0")
.port(5432)
.max_connections(100)
.shared_buffers("256MB")
.build()?;
// Create manager and connect
let manager = PostgresManager::builder()
.config(config)
.server_ip("192.168.1.100")
.ssh_user("root")
.build()?;
// Install and configure PostgreSQL
manager.install().await?;
manager.configure().await?;
// Test the connection
manager.test_connection().await?;
Ok(())
}§Examples
§Install with custom configuration
let config = PostgresConfig::builder()
.version("15")
.database_name("production_db")
.username("app_user")
.password("strong_password")
.listen_addresses("10.0.0.0/8")
.port(5432)
.max_connections(200)
.shared_buffers("512MB")
.effective_cache_size("2GB")
.build()?;
let manager = PostgresManager::builder()
.config(config)
.server_ip("10.0.1.50")
.ssh_user("admin")
.build()?;
manager.setup().await?;§Detect configuration changes
let diff = manager.diff().await?;
if diff.has_changes() {
println!("Configuration changes detected:");
for change in diff.changes() {
println!(" - {}", change);
}
// Apply changes
manager.apply_diff(&diff).await?;
}Re-exports§
pub use adapter::PostgresAdapter;pub use backup::ConfigBackup;pub use backup::PgHbaDiff;pub use backup::PgHbaRule;pub use backup::backup_config;pub use backup::cleanup_old_backups;pub use backup::diff_pg_hba_rules;pub use backup::list_backups;pub use backup::parse_pg_hba_rules;pub use backup::read_pg_hba;pub use backup::restore_backup;pub use backup::rollback_config;pub use config::PostgresConfig;pub use config::PostgresConfigBuilder;pub use diff::ConfigChange;pub use diff::ConfigDiff;pub use error::Error;pub use error::Result;pub use install::InstallationStep;pub use install::Platform;pub use install::SystemInfo;pub use install::SystemRequirements;pub use install::check_requirements;pub use install::check_version_available;pub use install::detect_platform;pub use install::get_system_info;pub use install::upgrade;pub use install::verify_installation;pub use manager::PostgresManager;pub use manager::PostgresManagerBuilder;pub use user_db_management::DatabaseInfo;pub use user_db_management::Privilege;pub use user_db_management::UserInfo;pub use user_db_management::create_database_with_options;pub use user_db_management::create_role;pub use user_db_management::create_user_with_options;pub use user_db_management::database_exists;pub use user_db_management::drop_database;pub use user_db_management::drop_user;pub use user_db_management::grant_privileges;pub use user_db_management::grant_role;pub use user_db_management::list_databases;pub use user_db_management::list_users;pub use user_db_management::revoke_privileges;pub use user_db_management::revoke_role;pub use user_db_management::update_user_password;pub use user_db_management::user_exists;pub use validation::WorkloadType;pub use validation::auto_tune;pub use validation::check_conflicting_settings;pub use validation::parse_memory_size;pub use validation::validate_cidr;pub use validation::validate_comprehensive;pub use validation::validate_listen_addresses;pub use validation::validate_memory_size;pub use validation::validate_resource_limits;
Modules§
- adapter
- PostgreSQL Adapter
- backup
- Configuration backup and rollback functionality
- config
- PostgreSQL configuration with builder pattern
- diff
- Configuration diff detection
- error
- Error types for PostgreSQL Manager
- install
- Advanced installation features
- manager
- PostgreSQL Manager with builder pattern
- operations
- Idempotent PostgreSQL operations
- user_
db_ management - User and Database Management
- validation
- Configuration validation utilities
Structs§
- Command
Output - The output of an executed SSH command.
- SshClient
- An SSH client for executing remote commands.
Enums§
- Auth
Method - Authentication methods for SSH connections.