35296-vm/db/migrations/001_create_initial_tables.sql
Flatlogic Bot 8d0660a262 yu
2025-11-02 07:44:15 +00:00

52 lines
2.1 KiB
SQL

-- Create users table
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`email` VARCHAR(255) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`role` ENUM('student', 'teacher', 'admin') NOT NULL,
`full_name` VARCHAR(255) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Create leave_requests table
CREATE TABLE IF NOT EXISTS `leave_requests` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`student_id` INT NOT NULL,
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL,
`reason` TEXT,
`status` ENUM('pending_teacher', 'pending_admin', 'approved', 'rejected') NOT NULL DEFAULT 'pending_teacher',
`teacher_id` INT DEFAULT NULL,
`teacher_approved_at` DATETIME DEFAULT NULL,
`teacher_rejection_reason` TEXT DEFAULT NULL,
`admin_id` INT DEFAULT NULL,
`admin_approved_at` DATETIME DEFAULT NULL,
`admin_rejection_reason` TEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`student_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`teacher_id`) REFERENCES `users`(`id`) ON DELETE SET NULL,
FOREIGN KEY (`admin_id`) REFERENCES `users`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Create leave_request_attachments table
CREATE TABLE IF NOT EXISTS `leave_request_attachments` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`leave_request_id` INT NOT NULL,
`file_path` VARCHAR(255) NOT NULL,
`original_filename` VARCHAR(255) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`leave_request_id`) REFERENCES `leave_requests`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Create password_resets table
CREATE TABLE IF NOT EXISTS `password_resets` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`email` VARCHAR(255) NOT NULL,
`token` VARCHAR(255) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;