//! Database and cloud provisioning (Neon, Railway, Render, local Docker Postgres).

mod constants;
mod docker_local;
mod error;
mod local_cluster;
mod neon;
mod payload_json;
mod railway;
mod render;
mod sql;
mod types;

pub use constants::EXPECTED_TABLES;
pub use docker_local::{
    inspect_container, list_managed_postgres_containers, remove_container,
    spin_up_postgres_instance, start_container, stop_container,
};
pub use error::ProvisioningError;
pub use local_cluster::{
    create_postgres_database, list_postgres_databases, postgres_uri_database_name,
    postgres_uri_fingerprint, replace_uri_database_name,
};
pub use neon::{create_neon_project, fetch_neon_connection_uri};
pub use payload_json::json_object_insert_if_missing;
pub use railway::{
    create_railway_plugin, create_railway_project, create_railway_service,
    fetch_railway_connection_uri, fetch_railway_project_base_environment_id,
};
pub use render::{create_render_postgres_service, fetch_render_connection_uri};
pub use sql::{run_provision_sql, split_provision_statements};
pub use types::{
    DockerContainerStatus, DockerManagedContainer, LocalClusterCreateDatabaseParams,
    LocalClusterDatabaseCreateOptions, NeonConnectionParams, NeonProjectCreateParams,
    NeonProjectCreateResult, RailwayConnectionParams, RailwayPluginCreateParams,
    RailwayPluginCreateResult, RailwayProjectCreateParams, RailwayProjectCreateResult,
    RailwayServiceCreateParams, RailwayServiceCreateResult, RenderConnectionParams,
    RenderPostgresCreateParams, RenderPostgresCreateResult, SpinUpPostgresParams,
    SpinUpPostgresResult,
};
