42 lines
1.2 KiB
SQL
42 lines
1.2 KiB
SQL
CREATE TABLE message_versions (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id BIGINT NOT NULL,
|
|
version BIGINT NOT NULL,
|
|
content TEXT,
|
|
archived_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
UNIQUE (message_id, version),
|
|
|
|
FOREIGN KEY (message_id)
|
|
REFERENCES messages(message_id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
INSERT INTO message_versions (message_id, version, content)
|
|
SELECT message_id, 1, content
|
|
FROM messages;
|
|
|
|
ALTER TABLE attachments
|
|
ADD COLUMN message_version BIGINT NOT NULL DEFAULT 1;
|
|
|
|
ALTER TABLE attachments
|
|
DROP CONSTRAINT attachments_attachment_id_key;
|
|
|
|
ALTER TABLE attachments
|
|
ADD UNIQUE (message_id, message_version, attachment_id),
|
|
ADD FOREIGN KEY (message_id, message_version)
|
|
REFERENCES message_versions(message_id, version)
|
|
ON DELETE CASCADE;
|
|
|
|
ALTER TABLE embeds
|
|
ADD COLUMN message_version BIGINT NOT NULL DEFAULT 1;
|
|
|
|
ALTER TABLE embeds
|
|
DROP CONSTRAINT embeds_message_id_embed_index_key;
|
|
|
|
ALTER TABLE embeds
|
|
ADD UNIQUE (message_id, message_version, embed_index),
|
|
ADD FOREIGN KEY (message_id, message_version)
|
|
REFERENCES message_versions(message_id, version)
|
|
ON DELETE CASCADE;
|