-- Tabla para configuración de WINSAAI vinculada a usuarios (SQL Server)
CREATE TABLE winsaai_config (
    id INT IDENTITY(1,1) PRIMARY KEY,
    id_usuario INT NOT NULL, -- ID del usuario propietario de la configuración
    host NVARCHAR(255) NOT NULL, -- Dirección IP o DNS del servidor WINSAAI
    port INT NOT NULL DEFAULT 80, -- Puerto de conexión
    protocol NVARCHAR(10) NOT NULL DEFAULT 'https' CHECK (protocol IN ('http', 'https')), -- Protocolo de conexión
    usuario NVARCHAR(100) NOT NULL, -- Usuario de autenticación
    password NVARCHAR(500) NOT NULL, -- Contraseña encriptada
    sync_pedimentos BIT DEFAULT 1, -- Sincronizar pedimentos
    sync_coves BIT DEFAULT 1, -- Sincronizar COVES
    status NVARCHAR(20) NOT NULL DEFAULT 'inactivo' CHECK (status IN ('activo', 'inactivo', 'error')), -- Estado de la conexión
    last_sync DATETIME2 NULL, -- Última sincronización exitosa
    created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
    updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
    
    -- Constraints
    CONSTRAINT UQ_winsaai_config_usuario UNIQUE (id_usuario) -- Un usuario solo puede tener una configuración
);

-- Indices para mejorar rendimiento
CREATE INDEX IX_winsaai_config_status ON winsaai_config (status);
CREATE INDEX IX_winsaai_config_usuario ON winsaai_config (id_usuario);

-- Trigger para actualizar updated_at automáticamente
CREATE TRIGGER TR_winsaai_config_updated_at
ON winsaai_config
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE winsaai_config 
    SET updated_at = GETDATE()
    WHERE id IN (SELECT id FROM inserted);
END;