<?php

namespace Models;

class ApiUserModel
{
    private \PDO $pdo;
    private array $api_Key = [];

    public function __construct()
    {
        // Conecta ao DB usando variável do .env
        $dbFile = $_ENV['DB_FILE'];
        $dbPath = __DIR__ . '/../' . $dbFile;
        $this->pdo = new \PDO("sqlite:" . $dbPath);
        $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

        $this->loadApiKeys();
    }

    /**
     * Carrega as chaves API dos usuários ativos do banco de dados.
     */
    private function loadApiKeys(): void
    {
        try {
            $stmt = $this->pdo->query("SELECT user_id, user_name, api_key_user, api_key_secret FROM user NATURAL JOIN api_key WHERE user_flag = 'a'");
            $users = $stmt->fetchAll(\PDO::FETCH_ASSOC);

            foreach ($users as $user) {
                $this->api_Key[$user['user_name']] = [
                    'user_apikey' => $user['api_key_user'],
                    'user_apisecret' => $user['api_key_secret'],
                    'user_id' => $user['user_id']
                ];
            }
        } catch (\PDOException $e) {
            error_log("Erro ao carregar chaves API: " . $e->getMessage());
        }
    }

    /**
     * Retorna o array de chaves API carregadas.
     *
     * @return array
     */
    public function getApiKeys(): array
    {
        return $this->api_Key;
    }

    // Opcional: Método para recarregar as chaves se necessário
    public function reloadApiKeys(): void
    {
        $this->api_Key = [];
        $this->loadApiKeys();
    }
}