CREATE TABLE comments
(
    id         BIGINT PRIMARY KEY,
    post_id    BIGINT      NOT NULL REFERENCES posts (id),
    author_id  BIGINT      NOT NULL,
    content    TEXT        NOT NULL,
    like_count INT                  DEFAULT 0,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    deleted_at TIMESTAMPTZ
);

-- 基础索引
CREATE INDEX idx_comments_post ON comments (post_id, created_at) WHERE deleted_at IS NULL;
CREATE INDEX idx_comments_author ON comments (author_id, created_at DESC) WHERE deleted_at IS NULL;

-- 三元组索引用于评论内容搜索
CREATE INDEX idx_comments_content_trgm ON comments USING gin (content gin_trgm_ops)
    WHERE deleted_at IS NULL;

-- 热门评论索引
CREATE INDEX idx_comments_post_likes ON comments (post_id, like_count DESC, created_at)
    WHERE deleted_at IS NULL;