-- ================================================
-- Tabel untuk menyimpan history perubahan data
-- ================================================

-- Tabel history untuk Keluarga
CREATE TABLE IF NOT EXISTS `keluarga_logs` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `keluarga_id` bigint unsigned NOT NULL COMMENT 'ID keluarga yang diubah',
  `user_id` bigint unsigned NOT NULL COMMENT 'User yang melakukan perubahan',
  `action` varchar(20) NOT NULL COMMENT 'Jenis aksi: create, update, delete',
  `old_data` json DEFAULT NULL COMMENT 'Data lama sebelum perubahan (JSON)',
  `new_data` json DEFAULT NULL COMMENT 'Data baru setelah perubahan (JSON)',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `keluarga_logs_keluarga_id_index` (`keluarga_id`),
  KEY `keluarga_logs_user_id_index` (`user_id`),
  KEY `keluarga_logs_action_index` (`action`),
  KEY `keluarga_logs_created_at_index` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='History perubahan data keluarga';

-- Tabel history untuk Anggota Keluarga
CREATE TABLE IF NOT EXISTS `anggota_logs` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `anggota_id` bigint unsigned NOT NULL COMMENT 'ID anggota yang diubah',
  `user_id` bigint unsigned NOT NULL COMMENT 'User yang melakukan perubahan',
  `action` varchar(20) NOT NULL COMMENT 'Jenis aksi: create, update, delete',
  `old_data` json DEFAULT NULL COMMENT 'Data lama sebelum perubahan (JSON)',
  `new_data` json DEFAULT NULL COMMENT 'Data baru setelah perubahan (JSON)',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `anggota_logs_anggota_id_index` (`anggota_id`),
  KEY `anggota_logs_user_id_index` (`user_id`),
  KEY `anggota_logs_action_index` (`action`),
  KEY `anggota_logs_created_at_index` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='History perubahan data anggota keluarga';

-- ================================================
-- Query untuk melihat history
-- ================================================

-- Contoh query untuk melihat history keluarga tertentu
-- SELECT 
--   kl.*,
--   u.name as user_name
-- FROM keluarga_logs kl
-- LEFT JOIN users u ON kl.user_id = u.id
-- WHERE kl.keluarga_id = [ID_KELUARGA]
-- ORDER BY kl.created_at DESC;

-- Contoh query untuk melihat history anggota tertentu
-- SELECT 
--   al.*,
--   u.name as user_name
-- FROM anggota_logs al
-- LEFT JOIN users u ON al.user_id = u.id
-- WHERE al.anggota_id = [ID_ANGGOTA]
-- ORDER BY al.created_at DESC;

-- Contoh query untuk melihat semua perubahan dalam periode tertentu
-- SELECT 
--   'keluarga' as tipe,
--   kl.id,
--   kl.keluarga_id as record_id,
--   kl.action,
--   u.name as user_name,
--   kl.created_at
-- FROM keluarga_logs kl
-- LEFT JOIN users u ON kl.user_id = u.id
-- WHERE kl.created_at >= '2025-12-01'
-- UNION ALL
-- SELECT 
--   'anggota' as tipe,
--   al.id,
--   al.anggota_id as record_id,
--   al.action,
--   u.name as user_name,
--   al.created_at
-- FROM anggota_logs al
-- LEFT JOIN users u ON al.user_id = u.id
-- WHERE al.created_at >= '2025-12-01'
-- ORDER BY created_at DESC;
