mirror of
https://github.com/block/buzz.git
synced 2026-10-27 20:41:57 +00:00
29 lines
1.6 KiB
SQL
29 lines
1.6 KiB
SQL
-- ── Thread metadata ───────────────────────────────────────────────────────────
|
|
-- Conformance: thread lookups filter by community before event matching.
|
|
|
|
CREATE TABLE thread_metadata (
|
|
community_id UUID NOT NULL REFERENCES communities(id),
|
|
event_created_at TIMESTAMPTZ NOT NULL,
|
|
event_id BYTEA NOT NULL,
|
|
channel_id UUID NOT NULL,
|
|
parent_event_id BYTEA,
|
|
parent_event_created_at TIMESTAMPTZ,
|
|
root_event_id BYTEA,
|
|
root_event_created_at TIMESTAMPTZ,
|
|
depth INT NOT NULL DEFAULT 0,
|
|
reply_count INT NOT NULL DEFAULT 0,
|
|
descendant_count INT NOT NULL DEFAULT 0,
|
|
last_reply_at TIMESTAMPTZ,
|
|
broadcast BOOLEAN NOT NULL DEFAULT FALSE,
|
|
PRIMARY KEY (community_id, event_created_at, event_id),
|
|
FOREIGN KEY (community_id, channel_id) REFERENCES channels (community_id, id)
|
|
);
|
|
|
|
CREATE INDEX idx_thread_metadata_parent ON thread_metadata (community_id, parent_event_id);
|
|
CREATE INDEX idx_thread_metadata_root ON thread_metadata (community_id, root_event_id);
|
|
CREATE INDEX idx_thread_metadata_window
|
|
ON thread_metadata (community_id, root_event_id, event_created_at DESC, event_id ASC);
|
|
CREATE INDEX idx_thread_metadata_channel_depth
|
|
ON thread_metadata (community_id, channel_id, depth, event_created_at);
|
|
CREATE INDEX idx_thread_metadata_event_id ON thread_metadata (community_id, event_id);
|