53 lines
2.1 KiB
SQL
53 lines
2.1 KiB
SQL
-- Migration: Initial Schema
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
full_name VARCHAR(100),
|
|
role ENUM('admin', 'clerk', 'staff') DEFAULT 'staff',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS mailbox (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
type ENUM('inbound', 'outbound') NOT NULL,
|
|
ref_no VARCHAR(50) NOT NULL UNIQUE,
|
|
date_registered DATE NOT NULL,
|
|
sender VARCHAR(255),
|
|
recipient VARCHAR(255),
|
|
subject VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
status ENUM('received', 'in_progress', 'closed') DEFAULT 'received',
|
|
assigned_to INT,
|
|
created_by INT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (assigned_to) REFERENCES users(id) ON DELETE SET NULL,
|
|
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS attachments (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
mail_id INT NOT NULL,
|
|
file_path VARCHAR(255) NOT NULL,
|
|
file_name VARCHAR(255) NOT NULL,
|
|
file_size INT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (mail_id) REFERENCES mailbox(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS comments (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
mail_id INT NOT NULL,
|
|
user_id INT,
|
|
comment TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (mail_id) REFERENCES mailbox(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Initial Admin User (password: admin123)
|
|
INSERT INTO users (username, password, full_name, role)
|
|
VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'مدير النظام', 'admin')
|
|
ON DUPLICATE KEY UPDATE username=username;
|