-- Migration: Add absenceclarification_id and permitEase_id fields to historyemails table
-- Description: Menambahkan field untuk tracking email history untuk absence clarification dan permit ease
-- Date: 2026-02-06
-- Safe: Yes (menambahkan field nullable, tidak merusak data existing)

-- Method: Menggunakan ALTER TABLE langsung dengan error handling yang jelas
-- Tidak menggunakan INFORMATION_SCHEMA atau stored procedure untuk menghindari permission issues
-- Robust dan aman tanpa merusak data

-- IMPORTANT NOTES:
-- 1. Jika column sudah ada, akan muncul error #1060 (Duplicate column name)
-- 2. Error tersebut TIDAK MERUSAK DATA dan bisa diabaikan dengan aman
-- 3. Untuk menghindari error, cek terlebih dahulu dengan: SHOW COLUMNS FROM historyemails;
-- 4. Script ini bisa dijalankan berulang kali tanpa merusak data

-- ============================================================
-- OPTION 1: Direct ALTER TABLE (Recommended - Paling Sederhana)
-- ============================================================

-- Step 1: Tambahkan absenceclarification_id column
-- Error handling: Jika column sudah ada, akan muncul error #1060 yang bisa diabaikan
ALTER TABLE `historyemails` 
ADD COLUMN `absenceclarification_id` INT NULL COMMENT 'Foreign key to absenceclarifications table' AFTER `attendancerequest_id`;

-- Step 2: Tambahkan permitEase_id column
-- Error handling: Jika column sudah ada, akan muncul error #1060 yang bisa diabaikan
ALTER TABLE `historyemails` 
ADD COLUMN `permitEase_id` INT NULL COMMENT 'Foreign key to permitEases table' AFTER `absenceclarification_id`;

-- Step 3: Verify the columns dengan SHOW COLUMNS (tidak memerlukan permission khusus)
SHOW COLUMNS FROM `historyemails` WHERE Field IN ('absenceclarification_id', 'permitEase_id');

-- ============================================================
-- OPTION 2: Manual Check First (Jika ingin menghindari error)
-- ============================================================
-- Uncomment bagian di bawah jika ingin check terlebih dahulu sebelum ALTER TABLE
-- Jalankan query di bawah ini terlebih dahulu untuk melihat apakah column sudah ada:

/*
-- Check existing columns
SHOW COLUMNS FROM `historyemails`;

-- Jika column belum ada, baru jalankan ALTER TABLE di atas
-- Jika column sudah ada, skip ALTER TABLE untuk column tersebut
*/

-- ============================================================
-- OPTION 3: Using INSERT ... ON DUPLICATE KEY UPDATE Pattern
-- ============================================================
-- Tidak applicable untuk ALTER TABLE, hanya untuk reference

-- ============================================================
-- VERIFICATION QUERIES
-- ============================================================
-- Jalankan query di bawah ini untuk memastikan column sudah ditambahkan:

-- Check structure
DESCRIBE `historyemails`;

-- Check specific columns
SELECT 
    COLUMN_NAME,
    DATA_TYPE,
    IS_NULLABLE,
    COLUMN_DEFAULT,
    COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'historyemails'
AND COLUMN_NAME IN ('absenceclarification_id', 'permitEase_id')
ORDER BY COLUMN_NAME;

-- Note: Jika query di atas juga error karena permission, gunakan SHOW COLUMNS saja:
-- SHOW COLUMNS FROM `historyemails` WHERE Field IN ('absenceclarification_id', 'permitEase_id');
