From c75281ebd926f281bc1f0aa3c1b93d3478ec7740 Mon Sep 17 00:00:00 2001 From: giovanni Date: Thu, 7 May 2026 17:24:46 +0700 Subject: [PATCH] add migration for update day recording pullet cikaum 1 dan 2 --- ...alize_recording_day_pullet_cikaum.down.sql | 21 +++++++++++++++++ ...rmalize_recording_day_pullet_cikaum.up.sql | 23 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.down.sql create mode 100644 internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.up.sql diff --git a/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.down.sql b/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.down.sql new file mode 100644 index 00000000..6cec944d --- /dev/null +++ b/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.down.sql @@ -0,0 +1,21 @@ +-- Revert: hitung ulang recording.day menggunakan chick_in_date sebelum perubahan +-- PFK 70: old chick_in_date = 2026-03-23 +-- PFK 71: old chick_in_date = 2025-12-15 +-- Kembalikan constraint chk_recordings_day ke >= 1 + +UPDATE recordings r +SET day = GREATEST(1, (r.record_datetime::date - + CASE r.project_flock_kandangs_id + WHEN 70 THEN DATE '2026-03-23' + WHEN 71 THEN DATE '2025-12-15' + END)::int + 1), + updated_at = NOW() +WHERE r.project_flock_kandangs_id IN (70, 71) + AND r.deleted_at IS NULL; + +ALTER TABLE recordings +DROP CONSTRAINT IF EXISTS chk_recordings_day; + +ALTER TABLE recordings +ADD CONSTRAINT chk_recordings_day +CHECK (day IS NULL OR day >= 1); diff --git a/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.up.sql b/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.up.sql new file mode 100644 index 00000000..675b4239 --- /dev/null +++ b/internal/database/migrations/20260507101151_normalize_recording_day_pullet_cikaum.up.sql @@ -0,0 +1,23 @@ +-- Normalize recording.day untuk Pullet Cikaum 1 & 2 +-- Setelah migrasi 20260505083754_update_pullet_cikaum_chick_in_date mengubah chick_in_date: +-- PFK 70: 2026-03-23 → 2026-03-24 (shift +1 hari) +-- PFK 71: 2025-12-15 → 2026-04-06 (shift +112 hari) +-- Recording.day perlu dihitung ulang: day = record_datetime::date - chick_in_date::date +-- Edge case: PFK 70 punya 1 recording (2026-03-23) sebelum chick_in_date baru → di-clamp ke 0 +-- Note: constraint chk_recordings_day diubah ke >= 0 karena zero-indexed day + +ALTER TABLE recordings +DROP CONSTRAINT IF EXISTS chk_recordings_day; + +ALTER TABLE recordings +ADD CONSTRAINT chk_recordings_day +CHECK (day IS NULL OR day >= 0); + +UPDATE recordings r +SET day = GREATEST(0, (r.record_datetime::date - pc.chick_in_date::date)::int), + updated_at = NOW() +FROM project_chickins pc +WHERE pc.project_flock_kandang_id = r.project_flock_kandangs_id + AND pc.deleted_at IS NULL + AND r.deleted_at IS NULL + AND r.project_flock_kandangs_id IN (70, 71);