52 lines
2.1 KiB
SQL
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;
|
|
|