package main

import (
	"fmt"
	"github.com/jmoiron/sqlx"
	_ "github.com/lib/pq"
	"holiday-api/db"
	"os"
)

func envMustExist(env string) string {
	if value, exists := os.LookupEnv(env); !exists {
		panic(fmt.Sprintf("env variable '%s' not defined", env))
	} else {
		return value
	}
}

func envOrDefault(env string, defaultValue string) string {
	if value, exists := os.LookupEnv(env); exists {
		return value
	} else {
		return defaultValue
	}
}

func connectToDb() (*sqlx.DB, error) {
	host := envMustExist("PSQL_HOST")
	port := envMustExist("PSQL_PORT")
	user := envMustExist("PSQL_USER")
	password := envMustExist("PSQL_PASSWORD")
	dbname := envMustExist("PSQL_DB")
	sslMode := envOrDefault("PSQL_SSLMODE", "disable")
	schema := envOrDefault("PSQL_SCHEMA", "public")

	return db.ConnectToDbNamed(host, port, user, password, dbname, sslMode, schema)
}
