1+ -- +goose Up
2+ -- +goose StatementBegin
3+ CREATE TABLE `tasks ` (
4+ ` id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
5+ ` project_slug` VARCHAR (255 ) NOT NULL ,
6+ ` number` INT NOT NULL ,
7+ ` title` VARCHAR (255 ) NOT NULL ,
8+ ` description` TEXT ,
9+ ` priority` ENUM(
10+ ' Trivial' ,
11+ ' Minor' ,
12+ ' Major' ,
13+ ' Critical' ,
14+ ' Blocker'
15+ ) NOT NULL DEFAULT ' Minor' ,
16+ ` status` ENUM(
17+ ' New' ,
18+ ' Open' ,
19+ ' In Progress' ,
20+ ' Resolved' ,
21+ ' Closed' ,
22+ ' Reopened'
23+ ) NOT NULL DEFAULT ' New' ,
24+ ` author_id` BIGINT UNSIGNED NOT NULL ,
25+ ` assignee_id` BIGINT UNSIGNED,
26+ ` due_date` DATE ,
27+ ` created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
28+ ` updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
29+ ` deleted_at` DATETIME,
30+ PRIMARY KEY (` id` ),
31+ UNIQUE KEY ` idx_tasks_project_number` (` project_slug` , ` number` ),
32+ KEY ` idx_tasks_author_id` (` author_id` ),
33+ KEY ` idx_tasks_assignee_id` (` assignee_id` ),
34+ KEY ` idx_tasks_status_priority` (` status` , ` priority` ),
35+ KEY ` idx_tasks_created_at` (` created_at` ),
36+ KEY ` idx_tasks_due_date` (` due_date` ),
37+ KEY ` idx_tasks_deleted_at` (` deleted_at` ),
38+ CONSTRAINT ` fk_tasks_project` FOREIGN KEY (` project_slug` ) REFERENCES ` projects` (` id` ) ON DELETE CASCADE ,
39+ CONSTRAINT ` fk_tasks_author` FOREIGN KEY (` author_id` ) REFERENCES ` users` (` id` ) ON DELETE RESTRICT,
40+ CONSTRAINT ` fk_tasks_assignee` FOREIGN KEY (` assignee_id` ) REFERENCES ` users` (` id` ) ON DELETE
41+ SET NULL
42+ ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
43+ -- +goose StatementEnd
44+ -- -
45+ -- +goose Down
46+ -- +goose StatementBegin
47+ DROP TABLE ` tasks` ;
48+ -- +goose StatementEnd
0 commit comments