|
|
|
@@ -1,167 +0,0 @@
|
|
|
|
-- CMS schema export for phpMyAdmin import
|
|
|
|
|
|
|
|
-- Generated to match the PHP migrations
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET NAMES utf8mb4;
|
|
|
|
|
|
|
|
SET time_zone = '+00:00';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET foreign_key_checks = 0;
|
|
|
|
|
|
|
|
SET sql_notes = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS attachments;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS comments;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS issue_labels;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS labels;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS issues;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS subscriptions;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS activity;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS audit;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS projects;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS settings;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS users;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS customers;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET foreign_key_checks = 1;
|
|
|
|
|
|
|
|
SET sql_notes = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE customers (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
name VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
orgno VARCHAR(100) NOT NULL,
|
|
|
|
|
|
|
|
billing_email VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE users (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
role ENUM('sysadmin','developer','customer') NOT NULL,
|
|
|
|
|
|
|
|
name VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
|
|
|
|
|
|
pass_hash VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
phone VARCHAR(50) NULL,
|
|
|
|
|
|
|
|
address VARCHAR(255) NULL,
|
|
|
|
|
|
|
|
customer_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
is_active TINYINT(1) NOT NULL DEFAULT 1,
|
|
|
|
|
|
|
|
twofa_secret VARCHAR(255) NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_users_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE SET NULL
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE projects (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
customer_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
name VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
description TEXT NULL,
|
|
|
|
|
|
|
|
status ENUM('active','archived') NOT NULL DEFAULT 'active',
|
|
|
|
|
|
|
|
created_by INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_projects_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_projects_creator FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
INDEX idx_projects_customer_status (customer_id, status)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE labels (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
project_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
name VARCHAR(100) NOT NULL,
|
|
|
|
|
|
|
|
color VARCHAR(7) NOT NULL,
|
|
|
|
|
|
|
|
CONSTRAINT fk_labels_project FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE issues (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
project_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
type ENUM('bug','feature','task') NOT NULL,
|
|
|
|
|
|
|
|
priority ENUM('low','medium','high','urgent') NOT NULL DEFAULT 'medium',
|
|
|
|
|
|
|
|
status ENUM('new','in_progress','in_review','resolved','closed') NOT NULL DEFAULT 'new',
|
|
|
|
|
|
|
|
assignee_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
title VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
description TEXT NOT NULL,
|
|
|
|
|
|
|
|
environment VARCHAR(50) NULL,
|
|
|
|
|
|
|
|
version VARCHAR(100) NULL,
|
|
|
|
|
|
|
|
steps_to_reproduce TEXT NULL,
|
|
|
|
|
|
|
|
created_by INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_issues_project FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_issues_assignee FOREIGN KEY (assignee_id) REFERENCES users(id) ON DELETE SET NULL,
|
|
|
|
|
|
|
|
CONSTRAINT fk_issues_creator FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
INDEX idx_issues_project_status (project_id, status),
|
|
|
|
|
|
|
|
INDEX idx_issues_priority (priority),
|
|
|
|
|
|
|
|
INDEX idx_issues_assignee (assignee_id)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE issue_labels (
|
|
|
|
|
|
|
|
issue_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
label_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
PRIMARY KEY (issue_id, label_id),
|
|
|
|
|
|
|
|
CONSTRAINT fk_issue_labels_issue FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_issue_labels_label FOREIGN KEY (label_id) REFERENCES labels(id) ON DELETE CASCADE
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE comments (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
issue_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
user_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
body TEXT NOT NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_comments_issue FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_comments_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
INDEX idx_comments_issue_created (issue_id, created_at)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE attachments (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
comment_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
filename VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
path VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
size INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
mime VARCHAR(255) NOT NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_attachments_comment FOREIGN KEY (comment_id) REFERENCES comments(id) ON DELETE CASCADE
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE subscriptions (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
user_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
project_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
issue_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_subscriptions_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_subscriptions_project FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
CONSTRAINT fk_subscriptions_issue FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
INDEX idx_subscriptions_user (user_id)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE activity (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
entity_type VARCHAR(50) NOT NULL,
|
|
|
|
|
|
|
|
entity_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
user_id INT UNSIGNED NOT NULL,
|
|
|
|
|
|
|
|
action VARCHAR(100) NOT NULL,
|
|
|
|
|
|
|
|
meta_json JSON NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_activity_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
|
|
|
|
INDEX idx_activity_entity (entity_type, entity_id),
|
|
|
|
|
|
|
|
INDEX idx_activity_user (user_id)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE audit (
|
|
|
|
|
|
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
|
|
|
user_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
entity VARCHAR(100) NOT NULL,
|
|
|
|
|
|
|
|
entity_id INT UNSIGNED NULL,
|
|
|
|
|
|
|
|
action VARCHAR(100) NOT NULL,
|
|
|
|
|
|
|
|
meta_json JSON NULL,
|
|
|
|
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL,
|
|
|
|
|
|
|
|
INDEX idx_audit_entity (entity, entity_id)
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE settings (
|
|
|
|
|
|
|
|
`key` VARCHAR(100) PRIMARY KEY,
|
|
|
|
|
|
|
|
`value` TEXT NULL,
|
|
|
|
|
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
|
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
|
|
|
|
|
|
|
|
|