athena_rs 3.18.0

Hyper performant polyglot Database driver
Documentation
use serde::Serialize;
use serde_json::Value;
use std::collections::HashMap;

#[derive(Debug, Clone, Serialize)]
pub struct LocalClusterDatabaseCreateOptions {
    pub owner: Option<String>,
    pub template: Option<String>,
    pub encoding: Option<String>,
    pub lc_collate: Option<String>,
    pub lc_ctype: Option<String>,
    pub tablespace: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct LocalClusterCreateDatabaseParams {
    pub database_name: String,
    pub options: LocalClusterDatabaseCreateOptions,
}

#[derive(Debug, Clone)]
pub struct SpinUpPostgresParams {
    pub client_name: String,
    pub container_name: Option<String>,
    pub image: Option<String>,
    pub host: Option<String>,
    pub host_port: Option<u16>,
    pub db_name: Option<String>,
    pub username: Option<String>,
    pub password: Option<String>,
    pub startup_timeout_secs: Option<u64>,
    pub reuse_existing: bool,
}

#[derive(Debug, Clone)]
pub struct NeonConnectionParams {
    pub api_key: String,
    pub project_id: String,
    pub branch_id: Option<String>,
    pub database_name: Option<String>,
    pub role_name: Option<String>,
    pub endpoint_id: Option<String>,
    pub api_base_url: Option<String>,
}

#[derive(Debug, Clone)]
pub struct RailwayConnectionParams {
    pub api_key: String,
    pub project_id: String,
    pub environment_id: String,
    pub service_id: Option<String>,
    pub plugin_id: Option<String>,
    pub graphql_url: Option<String>,
}

#[derive(Debug, Clone)]
pub struct RenderConnectionParams {
    pub api_key: String,
    pub service_id: String,
    pub api_base_url: Option<String>,
}

#[derive(Debug, Clone)]
pub struct NeonProjectCreateParams {
    pub api_key: String,
    pub project_name: Option<String>,
    pub project_payload: Option<Value>,
    pub api_base_url: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct NeonProjectCreateResult {
    pub project_id: String,
    pub branch_id: Option<String>,
    pub raw: Value,
}

#[derive(Debug, Clone)]
pub struct RailwayProjectCreateParams {
    pub api_key: String,
    pub project_input: Value,
    pub graphql_url: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct RailwayProjectCreateResult {
    pub project_id: String,
    pub base_environment_id: Option<String>,
    pub raw: Value,
}

#[derive(Debug, Clone)]
pub struct RailwayServiceCreateParams {
    pub api_key: String,
    pub service_input: Value,
    pub graphql_url: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct RailwayServiceCreateResult {
    pub service_id: String,
    pub raw: Value,
}

#[derive(Debug, Clone)]
pub struct RailwayPluginCreateParams {
    pub api_key: String,
    pub plugin_input: Value,
    pub graphql_url: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct RailwayPluginCreateResult {
    pub plugin_id: String,
    pub raw: Value,
}

#[derive(Debug, Clone)]
pub struct RenderPostgresCreateParams {
    pub api_key: String,
    pub owner_id: Option<String>,
    pub service_name: Option<String>,
    pub service_payload: Option<Value>,
    pub plan: Option<String>,
    pub region: Option<String>,
    pub postgres_version: Option<String>,
    pub disk_size_gb: Option<u32>,
    pub api_base_url: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct RenderPostgresCreateResult {
    pub service_id: String,
    pub raw: Value,
}

#[derive(Debug, Clone, Serialize)]
pub struct SpinUpPostgresResult {
    pub client_name: String,
    pub container_name: String,
    pub image: String,
    pub host: String,
    pub host_port: u16,
    pub db_name: String,
    pub username: String,
    pub password: String,
    pub pg_uri: String,
    pub created_new_container: bool,
    pub reused_existing_container: bool,
    pub wait_ready_ms: u128,
}

#[derive(Debug, Clone, Serialize)]
pub struct DockerContainerStatus {
    pub container_name: String,
    pub exists: bool,
    pub running: bool,
    pub status: Option<String>,
    pub image: Option<String>,
    pub host_port: Option<u16>,
}

#[derive(Debug, Clone, Serialize)]
pub struct DockerManagedContainer {
    pub container_name: String,
    pub running: bool,
    pub status: Option<String>,
    pub image: Option<String>,
    pub host_port: Option<u16>,
    pub labels: HashMap<String, String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct DockerRuntimeAccessStatus {
    pub available: bool,
    pub status: String,
    pub detail: String,
    pub hint: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct LocalProvisionDependencyStatus {
    pub os_family: String,
    pub package_manager: Option<String>,
    pub running_as_root: bool,
    pub sudo_available: bool,
    pub sudo_non_interactive_available: bool,
    pub systemctl_available: bool,
    pub can_attempt_install: bool,
    pub docker_binary_available: bool,
    pub docker_service_active: Option<bool>,
    pub docker_runtime_access: DockerRuntimeAccessStatus,
    pub postgres_binary_available: bool,
    pub postgres_service_active: Option<bool>,
    pub missing: Vec<String>,
    pub notes: Vec<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct LocalProvisionDependencyInstallStep {
    pub key: String,
    pub status: String,
    pub description: String,
    pub command: Option<String>,
    pub detail: Option<String>,
    pub output: Option<String>,
}

#[derive(Debug, Clone, Serialize)]
pub struct LocalProvisionDependencyInstallResult {
    pub requested: HashMap<String, Value>,
    pub before: LocalProvisionDependencyStatus,
    pub after: LocalProvisionDependencyStatus,
    pub overall_status: String,
    pub steps: Vec<LocalProvisionDependencyInstallStep>,
}

#[derive(Debug, Clone)]
pub struct InstallLocalProvisionDependenciesParams {
    pub install_docker: bool,
    pub install_postgres: bool,
    pub start_services: bool,
    pub use_sudo: bool,
}

#[derive(Debug, Clone)]
pub(crate) struct ResolvedSpinUpConfig {
    pub(crate) client_name: String,
    pub(crate) container_name: String,
    pub(crate) image: String,
    pub(crate) host: String,
    pub(crate) host_port: u16,
    pub(crate) db_name: String,
    pub(crate) username: String,
    pub(crate) password: String,
    pub(crate) startup_timeout_secs: u64,
    pub(crate) reuse_existing: bool,
}