Initial commit with .gitignore
This commit is contained in:
86
database/migration_v2_compatible.sql
Executable file
86
database/migration_v2_compatible.sql
Executable file
@@ -0,0 +1,86 @@
|
||||
-- =====================================================
|
||||
-- MIGRATION SCRIPT v2: Compatible Version
|
||||
-- For MySQL 5.7+ / MariaDB 10.2+
|
||||
-- =====================================================
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 1: Add phone column to staff_users
|
||||
-- =====================================================
|
||||
|
||||
-- Check and add phone column (run this separately if error)
|
||||
SET @dbname = DATABASE();
|
||||
SET @tablename = 'staff_users';
|
||||
SET @columnname = 'phone';
|
||||
SET @preparedStatement = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) > 0,
|
||||
'SELECT "Column phone already exists in staff_users"',
|
||||
'ALTER TABLE staff_users ADD COLUMN phone VARCHAR(20) AFTER role'
|
||||
));
|
||||
PREPARE alterIfNotExists FROM @preparedStatement;
|
||||
EXECUTE alterIfNotExists;
|
||||
DEALLOCATE PREPARE alterIfNotExists;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 2: Update attendance status ENUM
|
||||
-- =====================================================
|
||||
|
||||
ALTER TABLE attendance
|
||||
MODIFY COLUMN status ENUM('PRESENT', 'LATE', 'REGISTRATION', 'ALFA', 'SAKIT', 'IZIN') DEFAULT 'PRESENT';
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 3: Create leave_requests table
|
||||
-- =====================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS leave_requests (
|
||||
id VARCHAR(36) NOT NULL,
|
||||
student_id VARCHAR(36) NOT NULL,
|
||||
student_name VARCHAR(255) NOT NULL,
|
||||
student_nis VARCHAR(50) DEFAULT NULL,
|
||||
student_class VARCHAR(100) DEFAULT NULL,
|
||||
request_type ENUM('SAKIT', 'IZIN') NOT NULL,
|
||||
request_date VARCHAR(20) NOT NULL,
|
||||
reason TEXT NOT NULL,
|
||||
photo_evidence LONGTEXT,
|
||||
status ENUM('PENDING', 'APPROVED', 'REJECTED') DEFAULT 'PENDING',
|
||||
reviewed_by VARCHAR(36) DEFAULT NULL,
|
||||
reviewed_by_name VARCHAR(255) DEFAULT NULL,
|
||||
reviewed_at TIMESTAMP NULL DEFAULT NULL,
|
||||
rejection_reason TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_student (student_id),
|
||||
KEY idx_status (status),
|
||||
KEY idx_date (request_date),
|
||||
KEY idx_created (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- =====================================================
|
||||
-- STEP 4: Ensure Fonnte Token setting exists
|
||||
-- =====================================================
|
||||
|
||||
INSERT INTO settings (setting_key, setting_value)
|
||||
SELECT 'FONNTE_TOKEN', ''
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM settings WHERE setting_key = 'FONNTE_TOKEN'
|
||||
);
|
||||
|
||||
-- =====================================================
|
||||
-- VERIFICATION - Run these to confirm success
|
||||
-- =====================================================
|
||||
|
||||
SELECT 'Checking staff_users phone column...' AS step;
|
||||
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'staff_users'
|
||||
AND COLUMN_NAME = 'phone';
|
||||
|
||||
SELECT 'Checking leave_requests table...' AS step;
|
||||
SELECT COUNT(*) as table_exists FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'leave_requests';
|
||||
|
||||
SELECT 'Checking attendance status enum...' AS step;
|
||||
SHOW COLUMNS FROM attendance LIKE 'status';
|
||||
|
||||
SELECT 'Migration completed successfully!' AS result;
|
||||
Reference in New Issue
Block a user