Continue with next loop when there are no messages
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / install.sql
CommitLineData
2bf40f75
MW
1DROP TABLE IF EXISTS wcf1_conversation;
2CREATE TABLE wcf1_conversation (
3 conversationID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
4 subject VARCHAR(255) NOT NULL DEFAULT '',
5 time INT(10) NOT NULL DEFAULT 0,
f34884b9 6 firstMessageID INT(10),
2bf40f75
MW
7 userID INT(10),
8 username VARCHAR(255) NOT NULL DEFAULT '',
9 lastPostTime INT(10) NOT NULL DEFAULT 0,
10 lastPosterID INT(10),
11 lastPoster VARCHAR(255) NOT NULL DEFAULT '',
12 replies MEDIUMINT(7) NOT NULL DEFAULT 0,
13 attachments SMALLINT(5) NOT NULL DEFAULT 0,
14 participants MEDIUMINT(7) NOT NULL DEFAULT 0,
15 participantSummary TEXT,
16 participantCanInvite TINYINT(1) NOT NULL DEFAULT 0,
17 isClosed TINYINT(1) NOT NULL DEFAULT 0,
18 isDraft TINYINT(1) NOT NULL DEFAULT 0,
9544b6b4
MW
19 draftData MEDIUMTEXT,
20
21 KEY (userID, isDraft)
2bf40f75
MW
22);
23
24DROP TABLE IF EXISTS wcf1_conversation_to_user;
25CREATE TABLE wcf1_conversation_to_user (
26 conversationID INT(10) NOT NULL,
27 participantID INT(10),
a9bfc5bd 28 username VARCHAR(255) NOT NULL DEFAULT '',
2bf40f75
MW
29 hideConversation TINYINT(1) NOT NULL DEFAULT 0,
30 isInvisible TINYINT(1) NOT NULL DEFAULT 0,
31 lastVisitTime INT(10) NOT NULL DEFAULT 0,
219838a1
AE
32 joinedAt INT(10) NOT NULL DEFAULT 0,
33 leftAt INT(10) NOT NULL DEFAULT 0,
f7ac06dc 34 lastMessageID INT(10) NULL,
2bf40f75
MW
35
36 UNIQUE KEY (participantID, conversationID),
37 KEY (participantID, hideConversation)
38);
39
40DROP TABLE IF EXISTS wcf1_conversation_message;
41CREATE TABLE wcf1_conversation_message (
42 messageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
43 conversationID INT(10) NOT NULL,
44 userID INT(10),
45 username VARCHAR(255) NOT NULL DEFAULT '',
46 message MEDIUMTEXT NOT NULL,
47 time INT(10) NOT NULL DEFAULT 0,
48 attachments SMALLINT(5) NOT NULL DEFAULT 0,
2bf40f75 49 enableHtml TINYINT(1) NOT NULL DEFAULT 0,
2bf40f75 50 ipAddress VARCHAR(39) NOT NULL DEFAULT '',
e7ed68e5
MW
51 lastEditTime INT(10) NOT NULL DEFAULT 0,
52 editCount MEDIUMINT(7) NOT NULL DEFAULT 0,
a0c1a541 53 hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0,
2bf40f75
MW
54
55 KEY (conversationID, userID),
56 KEY (ipAddress)
57);
58
59-- labels
60DROP TABLE IF EXISTS wcf1_conversation_label;
61CREATE TABLE wcf1_conversation_label (
62 labelID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
63 userID INT(10) NOT NULL,
64 label VARCHAR(80) NOT NULL DEFAULT '',
7c5aa434 65 cssClassName VARCHAR(255) NOT NULL DEFAULT ''
2bf40f75
MW
66);
67
68DROP TABLE IF EXISTS wcf1_conversation_label_to_object;
69CREATE TABLE wcf1_conversation_label_to_object (
70 labelID INT(10) NOT NULL,
71 conversationID INT(10) NOT NULL,
72
73 UNIQUE KEY (labelID, conversationID)
74);
75
76ALTER TABLE wcf1_conversation ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
77ALTER TABLE wcf1_conversation ADD FOREIGN KEY (lastPosterID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
f34884b9 78ALTER TABLE wcf1_conversation ADD FOREIGN KEY (firstMessageID) REFERENCES wcf1_conversation_message (messageID) ON DELETE SET NULL;
2bf40f75
MW
79
80ALTER TABLE wcf1_conversation_to_user ADD FOREIGN KEY (conversationID) REFERENCES wcf1_conversation (conversationID) ON DELETE CASCADE;
81ALTER TABLE wcf1_conversation_to_user ADD FOREIGN KEY (participantID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
f7ac06dc 82ALTER TABLE wcf1_conversation_to_user ADD FOREIGN KEY (lastMessageID) REFERENCES wcf1_conversation_message (messageID) ON DELETE SET NULL;
2bf40f75
MW
83
84ALTER TABLE wcf1_conversation_message ADD FOREIGN KEY (conversationID) REFERENCES wcf1_conversation (conversationID) ON DELETE CASCADE;
85ALTER TABLE wcf1_conversation_message ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
86
87ALTER TABLE wcf1_conversation_label ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE;
88
89ALTER TABLE wcf1_conversation_label_to_object ADD FOREIGN KEY (labelID) REFERENCES wcf1_conversation_label (labelID) ON DELETE CASCADE;
90ALTER TABLE wcf1_conversation_label_to_object ADD FOREIGN KEY (conversationID) REFERENCES wcf1_conversation (conversationID) ON DELETE CASCADE;