-- Migration: lưu đầy đủ dữ liệu form tạo/chỉnh sửa lớp học.
-- An toàn dữ liệu: chỉ thêm cột nullable, không UPDATE/DELETE bản ghi cũ.
-- Có thể chạy lại trên phpMyAdmin: mỗi cột đều được kiểm tra trước khi thêm.

SET @class_table := 'class_tb';

SET @has_curriculum := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'curriculum');
SET @curriculum_sql := IF(@has_curriculum = 0, 'ALTER TABLE `class_tb` ADD COLUMN `curriculum` VARCHAR(255) NULL DEFAULT NULL AFTER `name`', 'SELECT 1');
PREPARE class_form_statement FROM @curriculum_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_meet_link := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'meet_link');
SET @meet_link_sql := IF(@has_meet_link = 0, 'ALTER TABLE `class_tb` ADD COLUMN `meet_link` VARCHAR(500) NULL DEFAULT NULL AFTER `learning_type`', 'SELECT 1');
PREPARE class_form_statement FROM @meet_link_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_tuition_type := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'tuition_type');
SET @tuition_type_sql := IF(@has_tuition_type = 0, 'ALTER TABLE `class_tb` ADD COLUMN `tuition_type` VARCHAR(20) NULL DEFAULT NULL AFTER `meet_link`', 'SELECT 1');
PREPARE class_form_statement FROM @tuition_type_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_tuition_fee := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'tuition_fee');
SET @tuition_fee_sql := IF(@has_tuition_fee = 0, 'ALTER TABLE `class_tb` ADD COLUMN `tuition_fee` BIGINT UNSIGNED NULL DEFAULT NULL AFTER `tuition_type`', 'SELECT 1');
PREPARE class_form_statement FROM @tuition_fee_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_cycle_type := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'tuition_cycle_type');
SET @cycle_type_sql := IF(@has_cycle_type = 0, 'ALTER TABLE `class_tb` ADD COLUMN `tuition_cycle_type` VARCHAR(20) NULL DEFAULT NULL AFTER `tuition_fee`', 'SELECT 1');
PREPARE class_form_statement FROM @cycle_type_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_cycle_sessions := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'tuition_cycle_sessions');
SET @cycle_sessions_sql := IF(@has_cycle_sessions = 0, 'ALTER TABLE `class_tb` ADD COLUMN `tuition_cycle_sessions` SMALLINT UNSIGNED NULL DEFAULT NULL AFTER `tuition_cycle_type`', 'SELECT 1');
PREPARE class_form_statement FROM @cycle_sessions_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;

SET @has_due_day := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = @class_table AND COLUMN_NAME = 'tuition_due_day');
SET @due_day_sql := IF(@has_due_day = 0, 'ALTER TABLE `class_tb` ADD COLUMN `tuition_due_day` TINYINT UNSIGNED NULL DEFAULT NULL AFTER `tuition_cycle_sessions`', 'SELECT 1');
PREPARE class_form_statement FROM @due_day_sql; EXECUTE class_form_statement; DEALLOCATE PREPARE class_form_statement;
