Repository navigation
Expand file tree
/
Copy pathdb.sql
More file actions
79 lines (70 loc) · 3.23 KB
/
Copy pathdb.sql
File metadata and controls
79 lines (70 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
DROP TABLE IF EXISTS spreadly_love;
DROP TABLE IF EXISTS spreadly_campaign_admin;
DROP TABLE IF EXISTS spreadly_campaign_user;
DROP TABLE IF EXISTS spreadly_user;
DROP TABLE IF EXISTS spreadly_campaign;
CREATE TABLE spreadly_campaign (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
slug VARCHAR(100) NOT NULL UNIQUE,
start_date DATETIME NOT NULL,
end_date DATETIME NOT NULL,
theme VARCHAR(50) DEFAULT 'christmas',
mail_subject VARCHAR(255) DEFAULT 'Your love messages',
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
INDEX idx_slug (slug),
INDEX idx_active (is_active)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE TABLE spreadly_user (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
login_code VARCHAR(6) NULL,
login_code_expires DATETIME NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY unique_email (email)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE TABLE spreadly_campaign_user (
id INT NOT NULL AUTO_INCREMENT,
campaign_id INT NOT NULL,
user_id INT NOT NULL,
receiver BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY unique_campaign_user (campaign_id, user_id),
KEY fk_campaign_user_campaign (campaign_id),
KEY fk_campaign_user_user (user_id),
CONSTRAINT fk_campaign_user_campaign FOREIGN KEY (campaign_id) REFERENCES spreadly_campaign (id) ON DELETE CASCADE,
CONSTRAINT fk_campaign_user_user FOREIGN KEY (user_id) REFERENCES spreadly_user (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE TABLE spreadly_campaign_admin (
id INT NOT NULL AUTO_INCREMENT,
campaign_id INT NOT NULL,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY unique_campaign_user (campaign_id, user_id),
KEY fk_campaign_admin_campaign (campaign_id),
KEY fk_campaign_admin_user (user_id),
CONSTRAINT fk_campaign_admin_campaign FOREIGN KEY (campaign_id) REFERENCES spreadly_campaign (id) ON DELETE CASCADE,
CONSTRAINT fk_campaign_admin_user FOREIGN KEY (user_id) REFERENCES spreadly_user (id) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE TABLE spreadly_love (
id INT NOT NULL AUTO_INCREMENT,
campaign_id INT NOT NULL,
id_receiver INT NOT NULL,
id_sender INT NULL,
sender VARCHAR(100) NOT NULL,
content text NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY fk_love_campaign (campaign_id),
KEY fk_love_receiver (id_receiver),
KEY fk_love_sender (id_sender),
CONSTRAINT fk_love_campaign FOREIGN KEY (campaign_id) REFERENCES spreadly_campaign (id) ON DELETE CASCADE,
CONSTRAINT fk_love_receiver FOREIGN KEY (id_receiver) REFERENCES spreadly_user (id) ON DELETE CASCADE,
CONSTRAINT fk_love_sender FOREIGN KEY (id_sender) REFERENCES spreadly_user (id) ON DELETE SET NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;