From 40241e5db3962d852e5e438e6580f51cf1d414c5 Mon Sep 17 00:00:00 2001 From: zhenyi <434836402@qq.com> Date: Thu, 11 Jun 2026 12:14:46 +0800 Subject: [PATCH] fix(database): align UUID defaults and add draft uniqueness constraint - Create unique index for message_draft when thread_id is NULL - Drop default values from ID columns across multiple message-related tables - Ensure imks-managed IDs align with application-generated UUID v7 values - Make top-level drafts unique per channel and user combination --- .../006_fix_uuid_defaults_and_draft_null.sql | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 migrate/006_fix_uuid_defaults_and_draft_null.sql diff --git a/migrate/006_fix_uuid_defaults_and_draft_null.sql b/migrate/006_fix_uuid_defaults_and_draft_null.sql new file mode 100644 index 0000000..d102372 --- /dev/null +++ b/migrate/006_fix_uuid_defaults_and_draft_null.sql @@ -0,0 +1,32 @@ +-- Align imks-managed IDs with application-generated UUID v7 values and +-- make top-level drafts unique when thread_id is NULL. + +BEGIN; + +CREATE UNIQUE INDEX IF NOT EXISTS uq_message_draft_channel_user_no_thread + ON message_draft (channel_id, user_id) + WHERE thread_id IS NULL; + +ALTER TABLE message_attachment ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_embed ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_embed_field ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_poll ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_poll_option ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_poll_vote ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_pin ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_read_state ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_draft ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_edit ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_article ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_reaction ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_bookmark ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_mention ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_thread ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_thread_participant ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_notification ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_scheduled ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_sticker ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_forward ALTER COLUMN id DROP DEFAULT; +ALTER TABLE message_component ALTER COLUMN id DROP DEFAULT; + +COMMIT;