BEGIN;

SET LOCAL lock_timeout = '10s';
SET LOCAL statement_timeout = '900000';
SET LOCAL idle_in_transaction_session_timeout = '900000';

DROP VIEW IF EXISTS public.configuraciones;
DROP VIEW IF EXISTS public.estadisticas;
DROP VIEW IF EXISTS public.notas_internas;
DROP VIEW IF EXISTS public.opi_prompts;
DROP VIEW IF EXISTS public.analisis_conversacion;
DROP VIEW IF EXISTS public.conocimientos_empleado_digital;
DROP VIEW IF EXISTS public.empleado_digital;
DROP VIEW IF EXISTS public.estadisticas_costos_ia;
DROP VIEW IF EXISTS public.clientes;
DROP VIEW IF EXISTS public.preguntas_clasificacion_multi;
DROP VIEW IF EXISTS public.reportes;

ALTER TABLE IF EXISTS public_legacy.pagos_planes
    DROP CONSTRAINT IF EXISTS fk_pago_pagador;
ALTER TABLE IF EXISTS public_legacy.pagos_planes
    ADD CONSTRAINT fk_pago_pagador
    FOREIGN KEY (id_cliente_pagador)
    REFERENCES crm.clientes(id_cliente)
    ON DELETE RESTRICT
    NOT VALID;
ALTER TABLE IF EXISTS public_legacy.pagos_planes
    VALIDATE CONSTRAINT fk_pago_pagador;

ALTER TABLE IF EXISTS public_legacy.planes_pago
    DROP CONSTRAINT IF EXISTS fk_planes_cliente;
ALTER TABLE IF EXISTS public_legacy.planes_pago
    ADD CONSTRAINT fk_planes_cliente
    FOREIGN KEY (id_cliente)
    REFERENCES crm.clientes(id_cliente)
    ON DELETE RESTRICT
    NOT VALID;
ALTER TABLE IF EXISTS public_legacy.planes_pago
    VALIDATE CONSTRAINT fk_planes_cliente;

ALTER TABLE IF EXISTS public_legacy.ventas
    DROP CONSTRAINT IF EXISTS fk_ventas_cliente;
ALTER TABLE IF EXISTS public_legacy.ventas
    ADD CONSTRAINT fk_ventas_cliente
    FOREIGN KEY (id_cliente)
    REFERENCES crm.clientes(id_cliente)
    ON DELETE SET NULL
    NOT VALID;
ALTER TABLE IF EXISTS public_legacy.ventas
    VALIDATE CONSTRAINT fk_ventas_cliente;

DROP TRIGGER IF EXISTS trg_refresca_jornadas_config ON public_legacy.configuraciones;
DROP TRIGGER IF EXISTS notas_cliente_before_update_soft_delete ON public_legacy.notas_internas;
DROP TRIGGER IF EXISTS trg_opi_prompts_updated_at ON public_legacy.opi_prompts;

DROP TABLE IF EXISTS public_legacy.notas_internas;
DROP TABLE IF EXISTS public_legacy.reportes;
DROP TABLE IF EXISTS public_legacy.configuraciones;
DROP TABLE IF EXISTS public_legacy.opi_prompts;
DROP TABLE IF EXISTS public_legacy.analisis_conversacion;
DROP TABLE IF EXISTS public_legacy.conocimientos_empleado_digital;
DROP TABLE IF EXISTS public_legacy.empleado_digital;
DROP TABLE IF EXISTS public_legacy.estadisticas_costos_ia;
DROP TABLE IF EXISTS public_legacy.preguntas_clasificacion_multi;
DROP TABLE IF EXISTS public_legacy.estadisticas;
DROP TABLE IF EXISTS public_legacy.clientes;

DROP SEQUENCE IF EXISTS public_legacy.analisis_conversacion_id_analisis_seq;
DROP SEQUENCE IF EXISTS public_legacy.clientes_id_cliente_seq;
DROP SEQUENCE IF EXISTS public_legacy.conocimientos_empleado_digital_id_seq;
DROP SEQUENCE IF EXISTS public_legacy.empleado_digital_id_empleado_seq;
DROP SEQUENCE IF EXISTS public_legacy.estadisticas_costos_ia_id_seq;
DROP SEQUENCE IF EXISTS public_legacy.estadisticas_id_estadistica_seq;
DROP SEQUENCE IF EXISTS public_legacy.notas_cliente_id_nota_seq;
DROP SEQUENCE IF EXISTS public_legacy.opi_prompts_id_seq;
DROP SEQUENCE IF EXISTS public_legacy.preguntas_clasificacion_multi_pregunta_id_seq;
DROP SEQUENCE IF EXISTS public_legacy.reportes_id_reporte_seq;

DROP FUNCTION IF EXISTS public.notas_cliente_soft_delete_stamp();
DROP FUNCTION IF EXISTS public.trig_refresca_jornadas_config();

COMMIT;
