· 6 years ago · Sep 15, 2019, 11:24 AM
1-- TODO from_group_id and from_chat_id can't be both NULL (create check trigger)
2DROP TABLE groups_and_chats_messages IF EXISTS;
3CREATE TABLE groups_and_chats_messages (
4 id SERIAL PRIMARY KEY,
5 from_group_id INT UNSIGNED NULL,
6 from_chat_id INT UNSIGNED NULL,
7 from_user_id INT UNSIGNED NULL,
8 to_user_id INT UNSIGNED NULL COMMENT 'If this field is speciefied message is from chat and from group either way'
9 reply_to_user_id INT UNSIGNED NULL,
10 message TEXT NOT NULL,
11 delivered BOOLEAN,
12 media_id INT UNSIGNED NULL,
13 CONSTRAINT groups_and_chats_messages_from_group_id_fk FOREIGN KEY (from_group_id) REFERENCES groups(id)
14 ON DELETE SET NULL,
15 CONSTRAINT groups_and_chats_messages_from_chat_id_fk FOREIGN KEY (from_chat_id) REFERENCES chats(id)
16 ON DELETE SET NULL,
17 CONSTRAINT groups_and_chats_messages_from_user_id_fk FOREIGN KEY (from_user_id) REFERENCES users(id)
18 ON DELETE SET NULL,
19 CONSTRAINT groups_and_chats_messages_to_user_id_fk FOREIGN KEY (to_user_id) REFERENCES users(id)
20 ON DELETE SET NULL,
21 CONSTRAINT groups_and_chats_messages_reply_to_user_id_fk FOREIGN KEY (reply_to_user_id) REFERENCES users(id)
22 ON DELETE SET NULL,
23 created_at DATETIME DEFAULT NOW(),
24 edited_at DATETIME DEFAULT NOW() ON UPDATE NOW()
25);