-- +goose Up
-- +goose StatementBegin
CREATE TABLE IF NOT EXISTS content_reports (
    id BIGSERIAL PRIMARY KEY,
    tenant_id BIGINT NOT NULL,
    content_id BIGINT NOT NULL,
    reporter_id BIGINT NOT NULL,
    reason VARCHAR(64) NOT NULL DEFAULT '',
    detail TEXT NOT NULL DEFAULT '',
    status VARCHAR(32) NOT NULL DEFAULT 'pending',
    handled_by BIGINT NOT NULL DEFAULT 0,
    handled_action VARCHAR(32) NOT NULL DEFAULT '',
    handled_reason VARCHAR(255) NOT NULL DEFAULT '',
    handled_at TIMESTAMPTZ,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE content_reports IS '内容举报：记录用户对内容的举报与超管处置结果，用于内容治理。';
COMMENT ON COLUMN content_reports.id IS '主键ID。';
COMMENT ON COLUMN content_reports.tenant_id IS '租户ID；用途：跨租户筛选与归属；约束：必须存在。';
COMMENT ON COLUMN content_reports.content_id IS '内容ID；用途：定位被举报内容；约束：必须存在。';
COMMENT ON COLUMN content_reports.reporter_id IS '举报用户ID；用途：追溯举报来源；约束：必须存在。';
COMMENT ON COLUMN content_reports.reason IS '举报原因；用途：快速分类；约束：建议前端枚举。';
COMMENT ON COLUMN content_reports.detail IS '举报描述；用途：补充说明与证据描述；可为空字符串。';
COMMENT ON COLUMN content_reports.status IS '处置状态；用途：pending/approved/rejected；约束：默认 pending。';
COMMENT ON COLUMN content_reports.handled_by IS '处理人ID；用途：审计追踪；默认 0 表示未处理。';
COMMENT ON COLUMN content_reports.handled_action IS '处理动作；用途：记录处置动作如 block/unpublish/ignore；可为空字符串。';
COMMENT ON COLUMN content_reports.handled_reason IS '处理说明；用途：超管处理备注；可为空字符串。';
COMMENT ON COLUMN content_reports.handled_at IS '处理时间；用途：追踪处理时效；未处理为空。';
COMMENT ON COLUMN content_reports.created_at IS '创建时间；用途：统计与排序。';
COMMENT ON COLUMN content_reports.updated_at IS '更新时间；用途：状态变化追踪。';

CREATE INDEX IF NOT EXISTS content_reports_tenant_id_idx ON content_reports(tenant_id);
CREATE INDEX IF NOT EXISTS content_reports_content_id_idx ON content_reports(content_id);
CREATE INDEX IF NOT EXISTS content_reports_reporter_id_idx ON content_reports(reporter_id);
CREATE INDEX IF NOT EXISTS content_reports_status_idx ON content_reports(status);
CREATE INDEX IF NOT EXISTS content_reports_created_at_idx ON content_reports(created_at);
CREATE INDEX IF NOT EXISTS content_reports_handled_at_idx ON content_reports(handled_at);
-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS content_reports;
-- +goose StatementEnd
