rustauth-sqlx 0.2.0

SQLx database adapters for RustAuth.
Documentation
#![allow(dead_code)]

use rustauth_core::env::env_var;
use rustauth_core::error::RustAuthError;

pub const DEFAULT_POSTGRES_URL: &str = "postgres://user:password@localhost:5432/rustauth";
pub const DEFAULT_MYSQL_URL: &str = "mysql://user:password@localhost:3306/rustauth";

pub fn database_url_from_env(value: Option<String>, default_url: &str) -> String {
    value.unwrap_or_else(|| default_url.to_owned())
}

pub fn postgres_database_url() -> String {
    database_url_from_env(env_var("TEST_POSTGRES_URL"), DEFAULT_POSTGRES_URL)
}

pub fn mysql_database_url() -> String {
    database_url_from_env(env_var("TEST_MYSQL_URL"), DEFAULT_MYSQL_URL)
}

pub fn preflight_error(adapter: &str, database_url: &str, error: sqlx::Error) -> RustAuthError {
    RustAuthError::Adapter(format!(
        "{adapter} test database preflight failed for `{database_url}`: {error}. Ensure the Docker Compose service exists, the `rustauth` database exists, and the configured user has permissions. Override with RUSTAUTH_TEST_POSTGRES_URL or RUSTAUTH_TEST_MYSQL_URL (RUSTAUTH_TEST_* fallback) when needed."
    ))
}