<?php

class Database {
    private $host;
    private $username;
    private $password;
    private $database;
    private $connection;
    
    public function __construct($config = null) {
        if ($config) {
            $this->host = $config['host'];
            $this->username = $config['username'];
            $this->password = $config['password'];
            $this->database = $config['database'];
        } else {
            // Configuración por defecto para apiseguros
            $this->host = "45.32.163.51";
            $this->username = 'api';
            $this->password = 'MasteroneXapi2026@..!!**';
            $this->database = 'apiseguros';
        }
    }
    
    public function connect() {
        if ($this->connection === null) {
            try {
                $dsn = "mysql:host={$this->host};dbname={$this->database};charset=utf8mb4";
                $this->connection = new PDO($dsn, $this->username, $this->password, [
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                    PDO::ATTR_EMULATE_PREPARES => false,
                    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
                ]);
            } catch(PDOException $e) {
                throw new Exception("Error de conexión a la base de datos: " . $e->getMessage());
            }
        }
        return $this->connection;
    }
    
    public function getConnection() {
        return $this->connect();
    }
    
    public function disconnect() {
        $this->connection = null;
    }
}

// Configuración para masterone (base de datos externa)
class MasteroneDatabase extends Database {
    public function __construct() {
        parent::__construct([
            'host' => '45.32.163.51',
            'username' => 'vinikita',
            'password' => 'LM2162451990lm..',
            'database' => 'masterone'
        ]);
    }
}