cinu
This commit is contained in:
615
RS_system/sql_migration_to_guid.sql
Normal file
615
RS_system/sql_migration_to_guid.sql
Normal file
@@ -0,0 +1,615 @@
|
||||
-- =====================================================
|
||||
-- SQL Migration Script: Auto-increment IDs to UUIDs
|
||||
-- =====================================================
|
||||
-- WARNING: This is a BREAKING CHANGE. Make a backup first!
|
||||
-- This script converts all primary keys from BIGSERIAL to UUID
|
||||
-- and updates all foreign key references accordingly.
|
||||
--
|
||||
-- INSTRUCTIONS:
|
||||
-- 1. BACKUP your database first: pg_dump -U postgres rs_system > backup.sql
|
||||
-- 2. Test on a copy of the database first
|
||||
-- 3. Run during maintenance window (minimal user activity)
|
||||
-- 4. Verify all data after migration
|
||||
-- =====================================================
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Enable UUID extension
|
||||
-- =====================================================
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Drop all foreign key constraints
|
||||
-- =====================================================
|
||||
-- (We'll recreate them later with UUID types)
|
||||
|
||||
-- Colaboraciones relationships
|
||||
ALTER TABLE IF EXISTS detalle_colaboracion DROP CONSTRAINT IF EXISTS fk_detalle_colaboracion_colaboracion;
|
||||
ALTER TABLE IF EXISTS detalle_colaboracion DROP CONSTRAINT IF EXISTS fk_detalle_colaboracion_tipo;
|
||||
ALTER TABLE IF EXISTS colaboraciones DROP CONSTRAINT IF EXISTS fk_colaboracion_miembro;
|
||||
|
||||
-- Miembros relationships
|
||||
ALTER TABLE IF EXISTS colaboraciones DROP CONSTRAINT IF EXISTS colaboraciones_miembro_id_fkey;
|
||||
ALTER TABLE IF EXISTS miembros DROP CONSTRAINT IF EXISTS fk_miembro_grupo_trabajo;
|
||||
ALTER TABLE IF EXISTS asistencia_culto DROP CONSTRAINT IF EXISTS fk_asistencia_miembro;
|
||||
|
||||
-- Prestamos relationships
|
||||
ALTER TABLE IF EXISTS prestamos DROP CONSTRAINT IF EXISTS fk_prestamo_miembro;
|
||||
ALTER TABLE IF EXISTS pagos_prestamo DROP CONSTRAINT IF EXISTS fk_pago_prestamo;
|
||||
|
||||
-- Inventory relationships
|
||||
ALTER TABLE IF EXISTS existencias DROP CONSTRAINT IF EXISTS fk_existencia_articulo;
|
||||
ALTER TABLE IF EXISTS existencias DROP CONSTRAINT IF EXISTS fk_existencia_ubicacion;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP CONSTRAINT IF EXISTS fk_movimiento_articulo;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP CONSTRAINT IF EXISTS fk_movimiento_ubicacion_origen;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP CONSTRAINT IF EXISTS fk_movimiento_ubicacion_destino;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP CONSTRAINT IF EXISTS fk_movimiento_usuario;
|
||||
|
||||
-- Contabilidad relationships
|
||||
ALTER TABLE IF EXISTS movimiento_general DROP CONSTRAINT IF EXISTS fk_movimiento_categoria_ingreso;
|
||||
ALTER TABLE IF EXISTS movimiento_general DROP CONSTRAINT IF EXISTS fk_movimiento_categoria_egreso;
|
||||
ALTER TABLE IF EXISTS movimiento_general DROP CONSTRAINT IF EXISTS fk_movimiento_reporte_mensual;
|
||||
ALTER TABLE IF EXISTS movimiento_general_adjunto DROP CONSTRAINT IF EXISTS fk_adjunto_movimiento;
|
||||
ALTER TABLE IF EXISTS contabilidad_registro DROP CONSTRAINT IF EXISTS fk_contabilidad_reporte;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Add UUID columns and migrate data
|
||||
-- =====================================================
|
||||
|
||||
-- GRUPOS_TRABAJO
|
||||
ALTER TABLE grupos_trabajo ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE grupos_trabajo SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE grupos_trabajo ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- MIEMBROS
|
||||
ALTER TABLE miembros ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE miembros ADD COLUMN grupo_trabajo_id_uuid UUID;
|
||||
UPDATE miembros SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE miembros ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- Update foreign key references
|
||||
UPDATE miembros m
|
||||
SET grupo_trabajo_id_uuid = gt.id_uuid
|
||||
FROM grupos_trabajo gt
|
||||
WHERE m.grupo_trabajo_id = gt.id;
|
||||
|
||||
-- TIPOS_COLABORACION
|
||||
ALTER TABLE tipos_colaboracion ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE tipos_colaboracion SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE tipos_colaboracion ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- COLABORACIONES
|
||||
ALTER TABLE colaboraciones ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE colaboraciones ADD COLUMN miembro_id_uuid UUID;
|
||||
ALTER TABLE colaboraciones ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
UPDATE colaboraciones SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE colaboraciones ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- Update foreign key references
|
||||
UPDATE colaboraciones c
|
||||
SET miembro_id_uuid = m.id_uuid
|
||||
FROM miembros m
|
||||
WHERE c.miembro_id = m.id;
|
||||
|
||||
-- DETALLE_COLABORACION
|
||||
ALTER TABLE detalle_colaboracion ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE detalle_colaboracion ADD COLUMN colaboracion_id_uuid UUID;
|
||||
ALTER TABLE detalle_colaboracion ADD COLUMN tipo_colaboracion_id_uuid UUID;
|
||||
UPDATE detalle_colaboracion SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE detalle_colaboracion ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- Update foreign key references
|
||||
UPDATE detalle_colaboracion dc
|
||||
SET colaboracion_id_uuid = c.id_uuid
|
||||
FROM colaboraciones c
|
||||
WHERE dc.colaboracion_id = c.id;
|
||||
|
||||
UPDATE detalle_colaboracion dc
|
||||
SET tipo_colaboracion_id_uuid = tc.id_uuid
|
||||
FROM tipos_colaboracion tc
|
||||
WHERE dc.tipo_colaboracion_id = tc.id;
|
||||
|
||||
-- PRESTAMOS
|
||||
ALTER TABLE prestamos ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE prestamos ADD COLUMN miembro_id_uuid UUID;
|
||||
UPDATE prestamos SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE prestamos ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE prestamos p
|
||||
SET miembro_id_uuid = m.id_uuid
|
||||
FROM miembros m
|
||||
WHERE p.miembro_id = m.id;
|
||||
|
||||
-- PAGOS_PRESTAMO
|
||||
ALTER TABLE pagos_prestamo ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE pagos_prestamo ADD COLUMN prestamo_id_uuid UUID;
|
||||
UPDATE pagos_prestamo SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE pagos_prestamo ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE pagos_prestamo pp
|
||||
SET prestamo_id_uuid = p.id_uuid
|
||||
FROM prestamos p
|
||||
WHERE pp.prestamo_id = p.id;
|
||||
|
||||
-- ASISTENCIA_CULTO
|
||||
ALTER TABLE asistencia_culto ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE asistencia_culto ADD COLUMN miembro_id_uuid UUID;
|
||||
UPDATE asistencia_culto SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE asistencia_culto ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE asistencia_culto ac
|
||||
SET miembro_id_uuid = m.id_uuid
|
||||
FROM miembros m
|
||||
WHERE ac.miembro_id = m.id;
|
||||
|
||||
-- USUARIOS
|
||||
ALTER TABLE usuarios ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE usuarios SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE usuarios ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- OFERNDAS
|
||||
ALTER TABLE oferndas ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE oferndas SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE oferndas ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- CATEGORIA_INGRESO
|
||||
ALTER TABLE categoria_ingreso ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE categoria_ingreso SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE categoria_ingreso ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- CATEGORIA_EGRESO
|
||||
ALTER TABLE categoria_egreso ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE categoria_egreso SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE categoria_egreso ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- REPORTE_MENSUAL_GENERAL
|
||||
ALTER TABLE reporte_mensual_general ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE reporte_mensual_general SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE reporte_mensual_general ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- REPORTE_MENSUAL_CONTABLE
|
||||
ALTER TABLE reporte_mensual_contable ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE reporte_mensual_contable SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE reporte_mensual_contable ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- MOVIMIENTO_GENERAL
|
||||
ALTER TABLE movimiento_general ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE movimiento_general ADD COLUMN categoria_ingreso_id_uuid UUID;
|
||||
ALTER TABLE movimiento_general ADD COLUMN categoria_egreso_id_uuid UUID;
|
||||
ALTER TABLE movimiento_general ADD COLUMN reporte_mensual_id_uuid UUID;
|
||||
UPDATE movimiento_general SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE movimiento_general ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE movimiento_general mg
|
||||
SET categoria_ingreso_id_uuid = ci.id_uuid
|
||||
FROM categoria_ingreso ci
|
||||
WHERE mg.categoria_ingreso_id = ci.id;
|
||||
|
||||
UPDATE movimiento_general mg
|
||||
SET categoria_egreso_id_uuid = ce.id_uuid
|
||||
FROM categoria_egreso ce
|
||||
WHERE mg.categoria_egreso_id = ce.id;
|
||||
|
||||
UPDATE movimiento_general mg
|
||||
SET reporte_mensual_id_uuid = rm.id_uuid
|
||||
FROM reporte_mensual_general rm
|
||||
WHERE mg.reporte_mensual_id = rm.id;
|
||||
|
||||
-- MOVIMIENTO_GENERAL_ADJUNTO
|
||||
ALTER TABLE movimiento_general_adjunto ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE movimiento_general_adjunto ADD COLUMN movimiento_id_uuid UUID;
|
||||
UPDATE movimiento_general_adjunto SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE movimiento_general_adjunto ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE movimiento_general_adjunto mga
|
||||
SET movimiento_id_uuid = mg.id_uuid
|
||||
FROM movimiento_general mg
|
||||
WHERE mga.movimiento_id = mg.id;
|
||||
|
||||
-- CONTABILIDAD_REGISTRO
|
||||
ALTER TABLE contabilidad_registro ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE contabilidad_registro ADD COLUMN reporte_id_uuid UUID;
|
||||
UPDATE contabilidad_registro SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE contabilidad_registro ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE contabilidad_registro cr
|
||||
SET reporte_id_uuid = rm.id_uuid
|
||||
FROM reporte_mensual_contable rm
|
||||
WHERE cr.reporte_id = rm.id;
|
||||
|
||||
-- ARTICULOS (assuming you have this table)
|
||||
ALTER TABLE IF EXISTS articulos ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE articulos SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE IF EXISTS articulos ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- UBICACIONES (assuming you have this table)
|
||||
ALTER TABLE IF EXISTS ubicaciones ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
UPDATE ubicaciones SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE IF EXISTS ubicaciones ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
-- EXISTENCIAS
|
||||
ALTER TABLE IF EXISTS existencias ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE IF EXISTS existencias ADD COLUMN articulo_id_uuid UUID;
|
||||
ALTER TABLE IF EXISTS existencias ADD COLUMN ubicacion_id_uuid UUID;
|
||||
UPDATE existencias SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE IF EXISTS existencias ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE existencias e
|
||||
SET articulo_id_uuid = a.id_uuid
|
||||
FROM articulos a
|
||||
WHERE e.articulo_id = a.id;
|
||||
|
||||
UPDATE existencias e
|
||||
SET ubicacion_id_uuid = u.id_uuid
|
||||
FROM ubicaciones u
|
||||
WHERE e.ubicacion_id = u.id;
|
||||
|
||||
-- MOVIMIENTOS_INVENTARIO
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD COLUMN id_uuid UUID DEFAULT uuid_generate_v4();
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD COLUMN articulo_id_uuid UUID;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD COLUMN ubicacion_origen_id_uuid UUID;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD COLUMN ubicacion_destino_id_uuid UUID;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD COLUMN usuario_id_uuid UUID;
|
||||
UPDATE movimientos_inventario SET id_uuid = uuid_generate_v4() WHERE id_uuid IS NULL;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ALTER COLUMN id_uuid SET NOT NULL;
|
||||
|
||||
UPDATE movimientos_inventario mi
|
||||
SET articulo_id_uuid = a.id_uuid
|
||||
FROM articulos a
|
||||
WHERE mi.articulo_id = a.id;
|
||||
|
||||
UPDATE movimientos_inventario mi
|
||||
SET ubicacion_origen_id_uuid = u.id_uuid
|
||||
FROM ubicaciones u
|
||||
WHERE mi.ubicacion_origen_id = u.id;
|
||||
|
||||
UPDATE movimientos_inventario mi
|
||||
SET ubicacion_destino_id_uuid = u.id_uuid
|
||||
FROM ubicaciones u
|
||||
WHERE mi.ubicacion_destino_id = u.id;
|
||||
|
||||
UPDATE movimientos_inventario mi
|
||||
SET usuario_id_uuid = usr.id_uuid
|
||||
FROM usuarios usr
|
||||
WHERE mi.usuario_id = usr.id;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Drop old ID columns and rename UUID columns
|
||||
-- =====================================================
|
||||
|
||||
-- GRUPOS_TRABAJO
|
||||
ALTER TABLE grupos_trabajo DROP CONSTRAINT IF EXISTS grupos_trabajo_pkey;
|
||||
ALTER TABLE grupos_trabajo DROP COLUMN id;
|
||||
ALTER TABLE grupos_trabajo RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE grupos_trabajo ADD PRIMARY KEY (id);
|
||||
|
||||
-- MIEMBROS
|
||||
ALTER TABLE miembros DROP CONSTRAINT IF EXISTS miembros_pkey;
|
||||
ALTER TABLE miembros DROP COLUMN id;
|
||||
ALTER TABLE miembros DROP COLUMN grupo_trabajo_id;
|
||||
ALTER TABLE miembros RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE miembros RENAME COLUMN grupo_trabajo_id_uuid TO grupo_trabajo_id;
|
||||
ALTER TABLE miembros ADD PRIMARY KEY (id);
|
||||
|
||||
-- TIPOS_COLABORACION
|
||||
ALTER TABLE tipos_colaboracion DROP CONSTRAINT IF EXISTS tipos_colaboracion_pkey;
|
||||
ALTER TABLE tipos_colaboracion DROP COLUMN id;
|
||||
ALTER TABLE tipos_colaboracion RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE tipos_colaboracion ADD PRIMARY KEY (id);
|
||||
|
||||
-- COLABORACIONES
|
||||
ALTER TABLE colaboraciones DROP CONSTRAINT IF EXISTS colaboraciones_pkey;
|
||||
ALTER TABLE colaboraciones DROP COLUMN id;
|
||||
ALTER TABLE colaboraciones DROP COLUMN miembro_id;
|
||||
ALTER TABLE colaboraciones RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE colaboraciones RENAME COLUMN miembro_id_uuid TO miembro_id;
|
||||
ALTER TABLE colaboraciones ADD PRIMARY KEY (id);
|
||||
|
||||
-- DETALLE_COLABORACION
|
||||
ALTER TABLE detalle_colaboracion DROP CONSTRAINT IF EXISTS detalle_colaboracion_pkey;
|
||||
ALTER TABLE detalle_colaboracion DROP COLUMN id;
|
||||
ALTER TABLE detalle_colaboracion DROP COLUMN colaboracion_id;
|
||||
ALTER TABLE detalle_colaboracion DROP COLUMN tipo_colaboracion_id;
|
||||
ALTER TABLE detalle_colaboracion RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE detalle_colaboracion RENAME COLUMN colaboracion_id_uuid TO colaboracion_id;
|
||||
ALTER TABLE detalle_colaboracion RENAME COLUMN tipo_colaboracion_id_uuid TO tipo_colaboracion_id;
|
||||
ALTER TABLE detalle_colaboracion ADD PRIMARY KEY (id);
|
||||
|
||||
-- PRESTAMOS
|
||||
ALTER TABLE prestamos DROP CONSTRAINT IF EXISTS prestamos_pkey;
|
||||
ALTER TABLE prestamos DROP COLUMN id;
|
||||
ALTER TABLE prestamos DROP COLUMN miembro_id;
|
||||
ALTER TABLE prestamos RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE prestamos RENAME COLUMN miembro_id_uuid TO miembro_id;
|
||||
ALTER TABLE prestamos ADD PRIMARY KEY (id);
|
||||
|
||||
-- PAGOS_PRESTAMO
|
||||
ALTER TABLE pagos_prestamo DROP CONSTRAINT IF EXISTS pagos_prestamo_pkey;
|
||||
ALTER TABLE pagos_prestamo DROP COLUMN id;
|
||||
ALTER TABLE pagos_prestamo DROP COLUMN prestamo_id;
|
||||
ALTER TABLE pagos_prestamo RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE pagos_prestamo RENAME COLUMN prestamo_id_uuid TO prestamo_id;
|
||||
ALTER TABLE pagos_prestamo ADD PRIMARY KEY (id);
|
||||
|
||||
-- ASISTENCIA_CULTO
|
||||
ALTER TABLE asistencia_culto DROP CONSTRAINT IF EXISTS asistencia_culto_pkey;
|
||||
ALTER TABLE asistencia_culto DROP COLUMN id;
|
||||
ALTER TABLE asistencia_culto DROP COLUMN miembro_id;
|
||||
ALTER TABLE asistencia_culto RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE asistencia_culto RENAME COLUMN miembro_id_uuid TO miembro_id;
|
||||
ALTER TABLE asistencia_culto ADD PRIMARY KEY (id);
|
||||
|
||||
-- USUARIOS
|
||||
ALTER TABLE usuarios DROP CONSTRAINT IF EXISTS usuarios_pkey;
|
||||
ALTER TABLE usuarios DROP COLUMN id;
|
||||
ALTER TABLE usuarios RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE usuarios ADD PRIMARY KEY (id);
|
||||
|
||||
-- OFERNDAS
|
||||
ALTER TABLE oferndas DROP CONSTRAINT IF EXISTS oferndas_pkey;
|
||||
ALTER TABLE oferndas DROP COLUMN id;
|
||||
ALTER TABLE oferndas RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE oferndas ADD PRIMARY KEY (id);
|
||||
|
||||
-- CATEGORIA_INGRESO
|
||||
ALTER TABLE categoria_ingreso DROP CONSTRAINT IF EXISTS categoria_ingreso_pkey;
|
||||
ALTER TABLE categoria_ingreso DROP COLUMN id;
|
||||
ALTER TABLE categoria_ingreso RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE categoria_ingreso ADD PRIMARY KEY (id);
|
||||
|
||||
-- CATEGORIA_EGRESO
|
||||
ALTER TABLE categoria_egreso DROP CONSTRAINT IF EXISTS categoria_egreso_pkey;
|
||||
ALTER TABLE categoria_egreso DROP COLUMN id;
|
||||
ALTER TABLE categoria_egreso RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE categoria_egreso ADD PRIMARY KEY (id);
|
||||
|
||||
-- REPORTE_MENSUAL_GENERAL
|
||||
ALTER TABLE reporte_mensual_general DROP CONSTRAINT IF EXISTS reporte_mensual_general_pkey;
|
||||
ALTER TABLE reporte_mensual_general DROP COLUMN id;
|
||||
ALTER TABLE reporte_mensual_general RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE reporte_mensual_general ADD PRIMARY KEY (id);
|
||||
|
||||
-- REPORTE_MENSUAL_CONTABLE
|
||||
ALTER TABLE reporte_mensual_contable DROP CONSTRAINT IF EXISTS reporte_mensual_contable_pkey;
|
||||
ALTER TABLE reporte_mensual_contable DROP COLUMN id;
|
||||
ALTER TABLE reporte_mensual_contable RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE reporte_mensual_contable ADD PRIMARY KEY (id);
|
||||
|
||||
-- MOVIMIENTO_GENERAL
|
||||
ALTER TABLE movimiento_general DROP CONSTRAINT IF EXISTS movimiento_general_pkey;
|
||||
ALTER TABLE movimiento_general DROP COLUMN id;
|
||||
ALTER TABLE movimiento_general DROP COLUMN categoria_ingreso_id;
|
||||
ALTER TABLE movimiento_general DROP COLUMN categoria_egreso_id;
|
||||
ALTER TABLE movimiento_general DROP COLUMN reporte_mensual_id;
|
||||
ALTER TABLE movimiento_general RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE movimiento_general RENAME COLUMN categoria_ingreso_id_uuid TO categoria_ingreso_id;
|
||||
ALTER TABLE movimiento_general RENAME COLUMN categoria_egreso_id_uuid TO categoria_egreso_id;
|
||||
ALTER TABLE movimiento_general RENAME COLUMN reporte_mensual_id_uuid TO reporte_mensual_id;
|
||||
ALTER TABLE movimiento_general ADD PRIMARY KEY (id);
|
||||
|
||||
-- MOVIMIENTO_GENERAL_ADJUNTO
|
||||
ALTER TABLE movimiento_general_adjunto DROP CONSTRAINT IF EXISTS movimiento_general_adjunto_pkey;
|
||||
ALTER TABLE movimiento_general_adjunto DROP COLUMN id;
|
||||
ALTER TABLE movimiento_general_adjunto DROP COLUMN movimiento_id;
|
||||
ALTER TABLE movimiento_general_adjunto RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE movimiento_general_adjunto RENAME COLUMN movimiento_id_uuid TO movimiento_id;
|
||||
ALTER TABLE movimiento_general_adjunto ADD PRIMARY KEY (id);
|
||||
|
||||
-- CONTABILIDAD_REGISTRO
|
||||
ALTER TABLE contabilidad_registro DROP CONSTRAINT IF EXISTS contabilidad_registro_pkey;
|
||||
ALTER TABLE contabilidad_registro DROP COLUMN id;
|
||||
ALTER TABLE contabilidad_registro DROP COLUMN reporte_id;
|
||||
ALTER TABLE contabilidad_registro RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE contabilidad_registro RENAME COLUMN reporte_id_uuid TO reporte_id;
|
||||
ALTER TABLE contabilidad_registro ADD PRIMARY KEY (id);
|
||||
|
||||
-- ARTICULOS
|
||||
ALTER TABLE IF EXISTS articulos DROP CONSTRAINT IF EXISTS articulos_pkey;
|
||||
ALTER TABLE IF EXISTS articulos DROP COLUMN id;
|
||||
ALTER TABLE IF EXISTS articulos RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE IF EXISTS articulos ADD PRIMARY KEY (id);
|
||||
|
||||
-- UBICACIONES
|
||||
ALTER TABLE IF EXISTS ubicaciones DROP CONSTRAINT IF EXISTS ubicaciones_pkey;
|
||||
ALTER TABLE IF EXISTS ubicaciones DROP COLUMN id;
|
||||
ALTER TABLE IF EXISTS ubicaciones RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE IF EXISTS ubicaciones ADD PRIMARY KEY (id);
|
||||
|
||||
-- EXISTENCIAS
|
||||
ALTER TABLE IF EXISTS existencias DROP CONSTRAINT IF EXISTS existencias_pkey;
|
||||
ALTER TABLE IF EXISTS existencias DROP COLUMN id;
|
||||
ALTER TABLE IF EXISTS existencias DROP COLUMN articulo_id;
|
||||
ALTER TABLE IF EXISTS existencias DROP COLUMN ubicacion_id;
|
||||
ALTER TABLE IF EXISTS existencias RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE IF EXISTS existencias RENAME COLUMN articulo_id_uuid TO articulo_id;
|
||||
ALTER TABLE IF EXISTS existencias RENAME COLUMN ubicacion_id_uuid TO ubicacion_id;
|
||||
ALTER TABLE IF EXISTS existencias ADD PRIMARY KEY (id);
|
||||
|
||||
-- MOVIMIENTOS_INVENTARIO
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP CONSTRAINT IF EXISTS movimientos_inventario_pkey;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP COLUMN id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP COLUMN articulo_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP COLUMN ubicacion_origen_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP COLUMN ubicacion_destino_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario DROP COLUMN usuario_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario RENAME COLUMN id_uuid TO id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario RENAME COLUMN articulo_id_uuid TO articulo_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario RENAME COLUMN ubicacion_origen_id_uuid TO ubicacion_origen_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario RENAME COLUMN ubicacion_destino_id_uuid TO ubicacion_destino_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario RENAME COLUMN usuario_id_uuid TO usuario_id;
|
||||
ALTER TABLE IF EXISTS movimientos_inventario ADD PRIMARY KEY (id);
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 5: Recreate foreign key constraints
|
||||
-- =====================================================
|
||||
|
||||
-- Miembros -> Grupos_trabajo
|
||||
ALTER TABLE miembros
|
||||
ADD CONSTRAINT fk_miembro_grupo_trabajo
|
||||
FOREIGN KEY (grupo_trabajo_id)
|
||||
REFERENCES grupos_trabajo(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- Colaboraciones -> Miembros
|
||||
ALTER TABLE colaboraciones
|
||||
ADD CONSTRAINT fk_colaboracion_miembro
|
||||
FOREIGN KEY (miembro_id)
|
||||
REFERENCES miembros(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Detalle_colaboracion -> Colaboraciones
|
||||
ALTER TABLE detalle_colaboracion
|
||||
ADD CONSTRAINT fk_detalle_colaboracion_colaboracion
|
||||
FOREIGN KEY (colaboracion_id)
|
||||
REFERENCES colaboraciones(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Detalle_colaboracion -> Tipos_colaboracion
|
||||
ALTER TABLE detalle_colaboracion
|
||||
ADD CONSTRAINT fk_detalle_colaboracion_tipo
|
||||
FOREIGN KEY (tipo_colaboracion_id)
|
||||
REFERENCES tipos_colaboracion(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Prestamos -> Miembros
|
||||
ALTER TABLE prestamos
|
||||
ADD CONSTRAINT fk_prestamo_miembro
|
||||
FOREIGN KEY (miembro_id)
|
||||
REFERENCES miembros(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Pagos_prestamo -> Prestamos
|
||||
ALTER TABLE pagos_prestamo
|
||||
ADD CONSTRAINT fk_pago_prestamo
|
||||
FOREIGN KEY (prestamo_id)
|
||||
REFERENCES prestamos(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Asistencia_culto -> Miembros
|
||||
ALTER TABLE asistencia_culto
|
||||
ADD CONSTRAINT fk_asistencia_miembro
|
||||
FOREIGN KEY (miembro_id)
|
||||
REFERENCES miembros(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Movimiento_general -> Categoria_ingreso
|
||||
ALTER TABLE movimiento_general
|
||||
ADD CONSTRAINT fk_movimiento_categoria_ingreso
|
||||
FOREIGN KEY (categoria_ingreso_id)
|
||||
REFERENCES categoria_ingreso(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- Movimiento_general -> Categoria_egreso
|
||||
ALTER TABLE movimiento_general
|
||||
ADD CONSTRAINT fk_movimiento_categoria_egreso
|
||||
FOREIGN KEY (categoria_egreso_id)
|
||||
REFERENCES categoria_egreso(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- Movimiento_general -> Reporte_mensual_general
|
||||
ALTER TABLE movimiento_general
|
||||
ADD CONSTRAINT fk_movimiento_reporte_mensual
|
||||
FOREIGN KEY (reporte_mensual_id)
|
||||
REFERENCES reporte_mensual_general(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Movimiento_general_adjunto -> Movimiento_general
|
||||
ALTER TABLE movimiento_general_adjunto
|
||||
ADD CONSTRAINT fk_adjunto_movimiento
|
||||
FOREIGN KEY (movimiento_id)
|
||||
REFERENCES movimiento_general(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Contabilidad_registro -> Reporte_mensual_contable
|
||||
ALTER TABLE contabilidad_registro
|
||||
ADD CONSTRAINT fk_contabilidad_reporte
|
||||
FOREIGN KEY (reporte_id)
|
||||
REFERENCES reporte_mensual_contable(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Existencias -> Articulos
|
||||
ALTER TABLE IF EXISTS existencias
|
||||
ADD CONSTRAINT fk_existencia_articulo
|
||||
FOREIGN KEY (articulo_id)
|
||||
REFERENCES articulos(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Existencias -> Ubicaciones
|
||||
ALTER TABLE IF EXISTS existencias
|
||||
ADD CONSTRAINT fk_existencia_ubicacion
|
||||
FOREIGN KEY (ubicacion_id)
|
||||
REFERENCES ubicaciones(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Movimientos_inventario -> Articulos
|
||||
ALTER TABLE IF EXISTS movimientos_inventario
|
||||
ADD CONSTRAINT fk_movimiento_articulo
|
||||
FOREIGN KEY (articulo_id)
|
||||
REFERENCES articulos(id)
|
||||
ON DELETE CASCADE;
|
||||
|
||||
-- Movimientos_inventario -> Ubicaciones (origen)
|
||||
ALTER TABLE IF EXISTS movimientos_inventario
|
||||
ADD CONSTRAINT fk_movimiento_ubicacion_origen
|
||||
FOREIGN KEY (ubicacion_origen_id)
|
||||
REFERENCES ubicaciones(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- Movimientos_inventario -> Ubicaciones (destino)
|
||||
ALTER TABLE IF EXISTS movimientos_inventario
|
||||
ADD CONSTRAINT fk_movimiento_ubicacion_destino
|
||||
FOREIGN KEY (ubicacion_destino_id)
|
||||
REFERENCES ubicaciones(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- Movimientos_inventario -> Usuarios
|
||||
ALTER TABLE IF EXISTS movimientos_inventario
|
||||
ADD CONSTRAINT fk_movimiento_usuario
|
||||
FOREIGN KEY (usuario_id)
|
||||
REFERENCES usuarios(id)
|
||||
ON DELETE SET NULL;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 6: Create indexes for better performance
|
||||
-- =====================================================
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_colaboraciones_miembro_id ON colaboraciones(miembro_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_detalle_colaboracion_id ON detalle_colaboracion(colaboracion_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_detalle_tipo_id ON detalle_colaboracion(tipo_colaboracion_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_colaboraciones_updated_at ON colaboraciones(updated_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_prestamos_miembro_id ON prestamos(miembro_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_asistencia_miembro_id ON asistencia_culto(miembro_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_movimiento_reporte_id ON movimiento_general(reporte_mensual_id);
|
||||
|
||||
-- =====================================================
|
||||
-- VERIFICATION QUERIES
|
||||
-- =====================================================
|
||||
-- Run these after migration to verify success:
|
||||
|
||||
-- SELECT 'colaboraciones' as table_name, COUNT(*) as count FROM colaboraciones;
|
||||
-- SELECT 'miembros' as table_name, COUNT(*) as count FROM miembros;
|
||||
-- SELECT 'detalle_colaboracion' as table_name, COUNT(*) as count FROM detalle_colaboracion;
|
||||
--
|
||||
-- -- Check that all IDs are now UUIDs:
|
||||
-- SELECT id, miembro_id FROM colaboraciones LIMIT 5;
|
||||
-- SELECT id, grupo_trabajo_id FROM miembros LIMIT 5;
|
||||
|
||||
-- =====================================================
|
||||
-- COMMIT or ROLLBACK
|
||||
-- =====================================================
|
||||
-- If everything looks good, COMMIT:
|
||||
COMMIT;
|
||||
|
||||
-- If there are errors, ROLLBACK:
|
||||
-- ROLLBACK;
|
||||
|
||||
-- =====================================================
|
||||
-- POST-MIGRATION NOTES
|
||||
-- =====================================================
|
||||
-- After running this script successfully:
|
||||
-- 1. Update your C# models to use Guid instead of long
|
||||
-- 2. Rebuild your application
|
||||
-- 3. Test thoroughly before deploying to production
|
||||
-- 4. Monitor for any issues with existing records
|
||||
-- =====================================================
|
||||
Reference in New Issue
Block a user