<?php

date_default_timezone_set('America/Sao_Paulo');

function obterSchemaUnidade($unidade)
{
    $unidade = strtolower(
        trim(
            (string) $unidade
        )
    );

    $unidades = [
        'hzs'       => 'hzsdb',
        'hzn'       => 'hzndb',
        'poligono'  => 'poldb',
        'padrao'    => 'padraodb',
        'localhost' => 'padraodb'
    ];

    if ($unidade === '') {
        throw new Exception(
            'Unidade não informada'
        );
    }

    if (!isset($unidades[$unidade])) {
        throw new Exception(
            'Unidade inválida: ' . $unidade
        );
    }

    return $unidades[$unidade];
}

function conectarSigaf()
{
    static $pdo = null;

    if ($pdo instanceof PDO) {
        return $pdo;
    }

    $usuario = getenv('SIGAF_DB_USER');
    $senha   = getenv('SIGAF_DB_PASSWORD');

    if ($usuario === false || trim($usuario) === '') {
        throw new RuntimeException(
            'SIGAF_DB_USER não configurado no ambiente.'
        );
    }

    if ($senha === false || $senha === '') {
        throw new RuntimeException(
            'SIGAF_DB_PASSWORD não configurado no ambiente.'
        );
    }

    $pdo = new PDO(
        'pgsql:host=127.0.0.1;port=5433;dbname=dbsigaf',
        $usuario,
        $senha,
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false
        ]
    );

    return $pdo;
}
