//! PostgreSQL-tilkobling via DATABASE_URL.
//!
//! Standardisert oppkobling brukt av alle CLI-verktøy.
//! Leser DATABASE_URL fra miljøvariabel, oppretter en pool med
//! et lite antall connections (CLI-verktøy trenger sjelden mer enn 2).

use sqlx::postgres::{PgPool, PgPoolOptions};

/// Opprett en PostgreSQL-pool fra DATABASE_URL miljøvariabel.
///
/// Returnerer feil hvis DATABASE_URL ikke er satt eller tilkobling feiler.
pub async fn connect() -> Result<PgPool, String> {
    let db_url = std::env::var("DATABASE_URL")
        .map_err(|_| "DATABASE_URL er ikke satt".to_string())?;

    PgPoolOptions::new()
        .max_connections(2)
        .connect(&db_url)
        .await
        .map_err(|e| format!("Kunne ikke koble til database: {e}"))
}

/// Opprett en PostgreSQL-pool med egendefinert maks connections.
pub async fn connect_with(max_connections: u32) -> Result<PgPool, String> {
    let db_url = std::env::var("DATABASE_URL")
        .map_err(|_| "DATABASE_URL er ikke satt".to_string())?;

    PgPoolOptions::new()
        .max_connections(max_connections)
        .connect(&db_url)
        .await
        .map_err(|e| format!("Kunne ikke koble til database: {e}"))
}
