raspisms/createDatabase.sql

151 lines
3.5 KiB
SQL
Executable File

#Ce fichier contient la base de données à créer
CREATE DATABASE IF NOT EXISTS raspisms;
USE raspisms;
CREATE TABLE IF NOT EXISTS settings
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
value VARCHAR(1000) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS receiveds
(
id INT NOT NULL AUTO_INCREMENT,
at DATETIME NOT NULL,
send_by VARCHAR(12) NOT NULL,
content VARCHAR(1000) NOT NULL,
is_command BOOLEAN NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS sendeds
(
id INT NOT NULL AUTO_INCREMENT,
at DATETIME NOT NULL,
target VARCHAR(12) NOT NULL,
content VARCHAR(1000) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS scheduleds
(
id INT NOT NULL AUTO_INCREMENT,
at DATETIME NOT NULL,
content VARCHAR(1000) NOT NULL,
progress BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS contacts
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
number VARCHAR(12) NOT NULL,
PRIMARY KEY (id),
UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS groups
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY (id),
UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS groups_contacts
(
id INT NOT NULL AUTO_INCREMENT,
id_group INT NOT NULL,
id_contact INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_group) REFERENCES groups (id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_contact) REFERENCES contacts (id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS scheduleds_contacts
(
id INT NOT NULL AUTO_INCREMENT,
id_scheduled INT NOT NULL,
id_contact INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_scheduled) REFERENCES scheduleds (id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_contact) REFERENCES contacts (id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS scheduleds_groups
(
id INT NOT NULL AUTO_INCREMENT,
id_scheduled INT NOT NULL,
id_group INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_scheduled) REFERENCES scheduleds (id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (id_group) REFERENCES groups (id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS scheduleds_numbers
(
id INT NOT NULL AUTO_INCREMENT,
id_scheduled INT NOT NULL,
number VARCHAR(12) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_scheduled) REFERENCES scheduleds (id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS commands
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
script VARCHAR(100) NOT NULL,
admin BOOLEAN NOT NULL,
PRIMARY KEY (id),
UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS events
(
id INT NOT NULL AUTO_INCREMENT,
type VARCHAR(25) NOT NULL,
at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
text VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS users
(
id INT NOT NULL AUTO_INCREMENT,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
admin BOOLEAN NOT NULL DEFAULT FALSE,
transfer BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (id),
UNIQUE (email)
);
CREATE TABLE IF NOT EXISTS transfers
(
id INT NOT NULL AUTO_INCREMENT,
id_received INT NOT NULL,
progress BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (id),
FOREIGN KEY (id_received) REFERENCES receiveds (id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS sms_stop
(
id INT NOT NULL AUTO_INCREMENT,
number VARCHAR(12) NOT NULL,
PRIMARY KEY (id),
UNIQUE (number)
);
#On insert les données par défaut dans les settings
INSERT INTO settings (name, value)
VALUES ('transfer', '1'),
('sms_stop', '1'),
('detect_url', '1');