-- EnglishSpeak Update 01 - XP System
-- Chạy file này trong phpMyAdmin trước khi thử XPService.

-- XP không phải lúc nào cũng gắn với level.
ALTER TABLE xp_transactions
    MODIFY COLUMN level_id BIGINT UNSIGNED NULL;

-- reason được tự động dùng xp_source nếu không có ghi chú.
ALTER TABLE xp_transactions
    MODIFY COLUMN reason VARCHAR(255) NOT NULL;

-- Bảo đảm các cột bổ sung tồn tại.
-- Nếu các cột này đã có thì KHÔNG chạy lại từng lệnh tương ứng.
-- ALTER TABLE xp_transactions ADD COLUMN academic_year_id INT NOT NULL AFTER student_id;
-- ALTER TABLE xp_transactions ADD COLUMN book_id BIGINT UNSIGNED NULL AFTER academic_year_id;
-- ALTER TABLE xp_transactions ADD COLUMN unit_id BIGINT UNSIGNED NULL AFTER book_id;
-- ALTER TABLE xp_transactions ADD COLUMN lesson_id BIGINT UNSIGNED NULL AFTER unit_id;
-- ALTER TABLE xp_transactions ADD COLUMN activity_type VARCHAR(50) NULL AFTER activity_id;
-- ALTER TABLE xp_transactions ADD COLUMN xp_source VARCHAR(50) NULL AFTER activity_type;
-- ALTER TABLE xp_transactions ADD COLUMN reference_id BIGINT UNSIGNED NULL AFTER xp_source;
-- ALTER TABLE xp_transactions ADD COLUMN updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
--     ON UPDATE CURRENT_TIMESTAMP AFTER created_at;

-- Thành tựu mẫu. Có thể sửa tên và số XP sau.
INSERT IGNORE INTO achievements
(code, name, description, icon, xp_reward, requirement_type, requirement_value, is_active)
VALUES
('first_xp', 'Bước khởi đầu', 'Nhận XP lần đầu tiên.', 'star', 10, 'transactions_count', 1, 1),
('xp_100', 'Chạm mốc 100 XP', 'Tích lũy 100 XP trong năm học.', 'trophy', 20, 'yearly_xp', 100, 1),
('flashcards_10', 'Chăm học Flashcards', 'Hoàn thành 10 lượt Flashcards.', 'cards', 30, 'activity_type_count:flashcards', 10, 1);
