//go:build dev
// +build dev

package db

import (
	"context"
	"fmt"
	"os"

	"github.com/jackc/pgx/v5/pgxpool"
)

var DB *pgxpool.Pool

func Connect() error {
	// Connect to Postgres inside Docker network
	dsn := fmt.Sprintf(
		"postgres://%s:%s@localhost:5432/%s?sslmode=disable",
		getEnv("POSTGRES_USER"),
		getEnv("POSTGRES_PASSWORD"),
		getEnv("POSTGRES_DB"),
	)

	pool, err := pgxpool.New(context.Background(), dsn)
	if err != nil {
		return err
	}

	DB = pool

	err = testDB()
	if err != nil {
		return err
	}

	return nil
}

func testDB() error {
	ctx := context.Background()
	conn, err := DB.Acquire(ctx)
	if err != nil {
		return err
	}
	defer conn.Release()

	row := conn.QueryRow(ctx, "SELECT 1")
	var result int
	err = row.Scan(&result)
	if err != nil {
		return err
	}
	return nil
}

func getEnv(key string) string {
	if val := os.Getenv(key); val != "" {
		return val
	}
	// Return empty string instead of fatal error - allows tests to run without prod env vars
	return ""
}
