-- Create message_thread before migrations that reference it.
-- Safe for existing databases because the table may already exist from 004.

BEGIN;

CREATE TABLE IF NOT EXISTS message_thread (
    id                     UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    channel_id             UUID NOT NULL,
    root_message_id        UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
    created_by             UUID NOT NULL,
    replies_count          BIGINT NOT NULL DEFAULT 0,
    participants_count     BIGINT NOT NULL DEFAULT 0,
    last_reply_message_id  UUID NULL REFERENCES message(id) ON DELETE SET NULL,
    last_reply_at          TIMESTAMPTZ NULL,
    resolved               BOOLEAN NOT NULL DEFAULT FALSE,
    resolved_by            UUID NULL,
    resolved_at            TIMESTAMPTZ NULL,
    created_at             TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at             TIMESTAMPTZ NOT NULL DEFAULT now(),
    CONSTRAINT uq_message_thread_root UNIQUE (root_message_id)
);

COMMIT;
