64 lines
2.1 KiB
SQL
64 lines
2.1 KiB
SQL
USE util;
|
|
|
|
CREATE TABLE notification(
|
|
id INT PRIMARY KEY,
|
|
`name` VARCHAR(255) UNIQUE,
|
|
`description` VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE notificationAcl(
|
|
notificationFk INT, -- FK notification.id
|
|
roleFk INT(10) unsigned, -- FK account.role.id
|
|
PRIMARY KEY(notificationFk, roleFk)
|
|
);
|
|
|
|
ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`id`)
|
|
ON DELETE CASCADE
|
|
ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_ibfk_2` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role`(`id`)
|
|
ON DELETE RESTRICT
|
|
ON UPDATE CASCADE;
|
|
|
|
CREATE TABLE notificationSubscription(
|
|
notificationFk INT, -- FK notification.id
|
|
userFk INT(10) unsigned, -- FK account.user.id
|
|
PRIMARY KEY(notificationFk, userFk)
|
|
);
|
|
|
|
ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`id`)
|
|
ON DELETE CASCADE
|
|
ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user`(`id`)
|
|
ON DELETE CASCADE
|
|
ON UPDATE CASCADE;
|
|
|
|
CREATE TABLE notificationQueue(
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
notificationFk VARCHAR(255), -- FK notification.name
|
|
params TEXT, -- JSON
|
|
authorFk INT(10) unsigned NULL, -- FK account.user.id
|
|
`status` ENUM('pending', 'sent', 'error') NOT NULL DEFAULT 'pending',
|
|
created DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX(notificationFk),
|
|
INDEX(authorFk),
|
|
INDEX(status)
|
|
);
|
|
|
|
ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `nnotificationQueue_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`name`)
|
|
ON DELETE CASCADE
|
|
ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_ibfk_2` FOREIGN KEY (`authorFk`) REFERENCES `account`.`user`(`id`)
|
|
ON DELETE CASCADE
|
|
ON UPDATE CASCADE;
|
|
|
|
CREATE TABLE notificationConfig(
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
cleanDays MEDIUMINT
|
|
);
|
|
|
|
INSERT INTO notificationConfig
|
|
SET cleanDays = 90;
|