-- ============================================================================
-- MIGRACIÓN: Crear tabla conocimientos_empleado_digital
-- Copia de knowledge_items con columnas renombradas a español
-- Fecha: 2026-01-25
-- ============================================================================

-- 1. Crear tabla con nueva estructura
CREATE TABLE IF NOT EXISTS conocimientos_empleado_digital (
    id BIGSERIAL PRIMARY KEY,
    business_id VARCHAR(50) NOT NULL,
    tipo_conocimiento INTEGER NOT NULL,
    titulo TEXT NOT NULL,
    contenido TEXT NOT NULL,
    etiquetas JSONB NOT NULL DEFAULT '[]'::jsonb,
    idioma VARCHAR(5) NOT NULL DEFAULT 'es',
    vector_busqueda TSVECTOR,
    version INTEGER NOT NULL DEFAULT 1,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    creado_por_login_id INTEGER NOT NULL,
    updated_at TIMESTAMPTZ,
    actualizado_por_login_id INTEGER,
    soft_delete BOOLEAN NOT NULL DEFAULT FALSE,
    soft_delete_date TIMESTAMPTZ,
    clave_unica UUID NOT NULL DEFAULT gen_random_uuid(),
    sucursal INT4[],
    categorias JSONB DEFAULT '[]'::jsonb
);

-- 2. Copiar todos los datos existentes con mapeo de columnas
INSERT INTO conocimientos_empleado_digital (
    id, business_id, tipo_conocimiento, titulo, contenido, etiquetas,
    idioma, vector_busqueda, version, created_at, creado_por_login_id,
    updated_at, actualizado_por_login_id, soft_delete, soft_delete_date,
    clave_unica, sucursal, categorias
)
SELECT
    id, business_id, type, title, body, tags,
    language, search_vector, version, created_at, created_by_login_id,
    updated_at, updated_by_login_id, soft_delete, soft_delete_date,
    unique_key, sucursal, categorias
FROM knowledge_items
ON CONFLICT (id) DO NOTHING;

-- 3. Sincronizar secuencia del ID
SELECT setval(
    pg_get_serial_sequence('conocimientos_empleado_digital', 'id'),
    COALESCE((SELECT MAX(id) FROM conocimientos_empleado_digital), 0) + 1,
    false
);

-- 4. Crear índices equivalentes
CREATE INDEX IF NOT EXISTS idx_conocimientos_ed_business_id
    ON conocimientos_empleado_digital(business_id);

CREATE INDEX IF NOT EXISTS idx_conocimientos_ed_tipo_conocimiento
    ON conocimientos_empleado_digital(tipo_conocimiento);

CREATE INDEX IF NOT EXISTS idx_conocimientos_ed_vector_busqueda
    ON conocimientos_empleado_digital USING GIN(vector_busqueda);

CREATE INDEX IF NOT EXISTS idx_conocimientos_ed_sucursal
    ON conocimientos_empleado_digital USING GIN(sucursal);

CREATE INDEX IF NOT EXISTS idx_conocimientos_ed_categorias
    ON conocimientos_empleado_digital USING GIN(categorias);
