From 3e34da7385fcd686a71adff11c48d83668d7622a Mon Sep 17 00:00:00 2001 From: giovanni Date: Sat, 23 May 2026 11:06:33 +0700 Subject: [PATCH] add migration for normalize wrong location pullet cikaum --- ...nsolidate_pullet_cikaum_locations.down.sql | 31 +++++++++++++++++ ...consolidate_pullet_cikaum_locations.up.sql | 34 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.down.sql create mode 100644 internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.up.sql diff --git a/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.down.sql b/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.down.sql new file mode 100644 index 00000000..88c69f9c --- /dev/null +++ b/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.down.sql @@ -0,0 +1,31 @@ +BEGIN; + +-- Rollback konsolidasi: kembalikan data ke loc 18 / 25 sesuai snapshot pre-migration. +-- Order: un-soft-delete locations dulu agar FK tidak gagal saat UPDATE child. + +-- 1. Un-soft-delete locations +UPDATE locations SET deleted_at = NULL WHERE id IN (18, 25); + +-- 2. project_flocks: PF 30 -> 18, PF 25 & 31 -> 25 +UPDATE project_flocks SET location_id = 18, updated_at = NOW() WHERE id = 30; +UPDATE project_flocks SET location_id = 25, updated_at = NOW() WHERE id IN (25, 31); + +-- 3. kandangs: K9, K72, K117 -> 18; K10, K73, K116 -> 25 +UPDATE kandangs SET location_id = 18, updated_at = NOW() WHERE id IN (9, 72, 117); +UPDATE kandangs SET location_id = 25, updated_at = NOW() WHERE id IN (10, 73, 116); + +-- 4. kandang_groups: KG 26, 68 -> 18; KG 27, 67 -> 25 +UPDATE kandang_groups SET location_id = 18, updated_at = NOW() WHERE id IN (26, 68); +UPDATE kandang_groups SET location_id = 25, updated_at = NOW() WHERE id IN (27, 67); + +-- 5. warehouses: W27, W145, W152 -> 18; W3, W146, W153 -> 25 +UPDATE warehouses SET location_id = 18, updated_at = NOW() WHERE id IN (27, 145, 152); +UPDATE warehouses SET location_id = 25, updated_at = NOW() WHERE id IN (3, 146, 153); + +-- 6. expenses: list eksplisit per location +UPDATE expenses SET location_id = 18, updated_at = NOW() +WHERE id IN (36, 345, 500, 501, 502, 503, 504, 505, 506, 507, 508); +UPDATE expenses SET location_id = 25, updated_at = NOW() +WHERE id IN (9, 37, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518); + +COMMIT; diff --git a/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.up.sql b/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.up.sql new file mode 100644 index 00000000..3480b7cc --- /dev/null +++ b/internal/database/migrations/20260523035647_consolidate_pullet_cikaum_locations.up.sql @@ -0,0 +1,34 @@ +BEGIN; + +-- Konsolidasi 3 lokasi "Pullet Cikaum" jadi 1. +-- Pindahkan semua data di loc 18 (Pullet Cikaum 1) & 25 (Pullet Cikaum 2) ke loc 2 (Pullet Cikaum). +-- Urutan wajib: semua UPDATE child harus selesai SEBELUM soft-delete locations, +-- karena trigger trg_soft_delete_fk_locations akan RAISE EXCEPTION untuk FK +-- RESTRICT (project_flocks, kandangs, kandang_groups, expenses) atau SET NULL +-- untuk warehouses kalau masih ada child yang reference. + +-- 1. project_flocks (PF 25, 30, 31) +UPDATE project_flocks SET location_id = 2, updated_at = NOW() +WHERE location_id IN (18, 25); + +-- 2. kandangs (K9, K72, K117, K10, K73, K116) +UPDATE kandangs SET location_id = 2, updated_at = NOW() +WHERE location_id IN (18, 25); + +-- 3. kandang_groups (KG 26, 68, 27, 67) +UPDATE kandang_groups SET location_id = 2, updated_at = NOW() +WHERE location_id IN (18, 25); + +-- 4. warehouses (W3, W27, W145, W146, W152, W153) +UPDATE warehouses SET location_id = 2, updated_at = NOW() +WHERE location_id IN (18, 25); + +-- 5. expenses (23 row BOP) +UPDATE expenses SET location_id = 2, updated_at = NOW() +WHERE location_id IN (18, 25); + +-- 6. Soft-delete locations 18 & 25 (kosong, aman karena semua child sudah pindah) +UPDATE locations SET deleted_at = NOW() +WHERE id IN (18, 25) AND deleted_at IS NULL; + +COMMIT;