You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
# DROP TABLE page; DROP TABLE; USER
|
|
|
|
CREATE TABLE user (
|
|
`id` CHAR(32) PRIMARY KEY,
|
|
`role` CHAR(16),
|
|
|
|
INDEX(role)
|
|
);
|
|
|
|
CREATE TABLE page (
|
|
`id` CHAR(16) NOT NULL PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`author` VARCHAR(64),
|
|
`category` VARCHAR(16) NOT NULL,
|
|
|
|
`fictional_date` DATETIME NOT NULL,
|
|
`publish_date` DATETIME NOT NULL,
|
|
`edit_date` DATETIME NOT NULL,
|
|
|
|
`dated` BOOLEAN NOT NULL,
|
|
`published` BOOLEAN NOT NULL,
|
|
`unlisted` BOOLEAN NOT NULL,
|
|
`specific` BOOLEAN NOT NULL,
|
|
`indexed` BOOLEAN NOT NULL,
|
|
|
|
`type` VARCHAR(16) NOT NULL,
|
|
`source` MEDIUMTEXT NOT NULL,
|
|
`cache` MEDIUMTEXT NOT NULL,
|
|
|
|
`background_url` VARCHAR(255),
|
|
|
|
FOREIGN KEY (`author`) REFERENCES user(`id`) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE tag (
|
|
`id` CHAR(24) NOT NULL PRIMARY KEY,
|
|
`type` CHAR(16) NOT NULL,
|
|
`disabled` BOOLEAN NOT NULL,
|
|
`name` VARCHAR(64) NOT NULL,
|
|
|
|
UNIQUE(name),
|
|
INDEX(disabled)
|
|
);
|
|
|
|
CREATE TABLE page_tag (
|
|
`page_id` CHAR(16) NOT NULL,
|
|
`tag_id` CHAR(16) NOT NULL,
|
|
|
|
PRIMARY KEY (`page_id`, `tag_id`),
|
|
FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`tag_id`) REFERENCES tag(`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE page_unread (
|
|
`page_id` CHAR(16) NOT NULL,
|
|
`user_id` CHAR(32) NOT NULL,
|
|
|
|
PRIMARY KEY (`page_id`, `user_id`),
|
|
FOREIGN KEY (`page_id`) REFERENCES page(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`user_id`) REFERENCES user(`id`) ON DELETE CASCADE
|
|
);
|