25 lines
1.1 KiB
SQL
25 lines
1.1 KiB
SQL
-- Task 7 chat identity snapshots, query and delivery indexes.
|
|
ALTER TABLE "messages" ADD COLUMN "sender_public_id" UUID;
|
|
UPDATE "messages" AS m
|
|
SET "sender_public_id" = p."public_id"
|
|
FROM "anonymous_profiles" AS p
|
|
WHERE p."account_id" = m."sender_id";
|
|
-- Legacy/seed rows may predate anonymous profiles. Preserve an unlinkable
|
|
-- snapshot instead of deriving or exposing the private account identifier.
|
|
UPDATE "messages"
|
|
SET "sender_public_id" = gen_random_uuid()
|
|
WHERE "sender_public_id" IS NULL;
|
|
ALTER TABLE "messages" ALTER COLUMN "sender_public_id" SET NOT NULL;
|
|
|
|
-- Outbox events already provide durable message event dedupe.
|
|
CREATE INDEX "messages_conversation_seq_inbox_idx"
|
|
ON "messages" ("conversation_id", "seq");
|
|
CREATE INDEX "conversation_members_account_conversation_idx"
|
|
ON "conversation_members" ("account_id", "conversation_id")
|
|
WHERE "left_at" IS NULL;
|
|
CREATE INDEX "conversations_last_message_cursor_idx"
|
|
ON "conversations" ("last_message_at" DESC, "id" DESC);
|
|
CREATE INDEX "sanctions_active_account_idx"
|
|
ON "sanctions" ("account_id", "starts_at", "expires_at")
|
|
WHERE "revoked_at" IS NULL;
|