feat: init
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
-- 006: PR Reviews, Branch Protection, Fork enhancements
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pr_review (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
pull_request_id UUID NOT NULL REFERENCES pull_request(id) ON DELETE CASCADE,
|
||||
author_id UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
state TEXT NOT NULL,
|
||||
body TEXT NULL,
|
||||
commit_sha TEXT NULL,
|
||||
submitted_at TIMESTAMPTZ NULL,
|
||||
dismissed_at TIMESTAMPTZ NULL,
|
||||
dismissed_by UUID NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
dismiss_reason TEXT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL,
|
||||
updated_at TIMESTAMPTZ NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_pull_request_id ON pr_review (pull_request_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_author_id ON pr_review (author_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pr_review_comment (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
review_id UUID NOT NULL REFERENCES pr_review(id) ON DELETE CASCADE,
|
||||
pull_request_id UUID NOT NULL REFERENCES pull_request(id) ON DELETE CASCADE,
|
||||
author_id UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
body TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
line INTEGER NULL,
|
||||
original_line INTEGER NULL,
|
||||
start_line INTEGER NULL,
|
||||
original_start_line INTEGER NULL,
|
||||
diff_hunk TEXT NULL,
|
||||
in_reply_to_id UUID NULL REFERENCES pr_review_comment(id) ON DELETE CASCADE,
|
||||
edited_at TIMESTAMPTZ NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL,
|
||||
updated_at TIMESTAMPTZ NOT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_comment_review_id ON pr_review_comment (review_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_comment_pull_request_id ON pr_review_comment (pull_request_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_comment_author_id ON pr_review_comment (author_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_pr_review_comment_path ON pr_review_comment (path);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS branch_protection_rule (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
repo_id UUID NOT NULL REFERENCES repo(id) ON DELETE CASCADE,
|
||||
pattern TEXT NOT NULL,
|
||||
require_approvals INTEGER NOT NULL DEFAULT 0,
|
||||
require_status_checks BOOLEAN NOT NULL DEFAULT false,
|
||||
required_status_checks TEXT[] NOT NULL DEFAULT '{}',
|
||||
require_linear_history BOOLEAN NOT NULL DEFAULT false,
|
||||
allow_force_pushes BOOLEAN NOT NULL DEFAULT false,
|
||||
allow_deletions BOOLEAN NOT NULL DEFAULT false,
|
||||
require_signed_commits BOOLEAN NOT NULL DEFAULT false,
|
||||
require_code_owner_review BOOLEAN NOT NULL DEFAULT false,
|
||||
dismiss_stale_reviews BOOLEAN NOT NULL DEFAULT false,
|
||||
restrict_pushes BOOLEAN NOT NULL DEFAULT false,
|
||||
push_allowances UUID[] NOT NULL DEFAULT '{}',
|
||||
restrict_review_dismissal BOOLEAN NOT NULL DEFAULT false,
|
||||
dismissal_allowances UUID[] NOT NULL DEFAULT '{}',
|
||||
require_conversation_resolution BOOLEAN NOT NULL DEFAULT false,
|
||||
created_by UUID NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL,
|
||||
updated_at TIMESTAMPTZ NOT NULL,
|
||||
CONSTRAINT uq_branch_protection_rule UNIQUE (repo_id, pattern)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_branch_protection_rule_repo_id ON branch_protection_rule (repo_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS repo_fork (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
parent_repo_id UUID NOT NULL REFERENCES repo(id) ON DELETE CASCADE,
|
||||
fork_repo_id UUID NOT NULL REFERENCES repo(id) ON DELETE CASCADE,
|
||||
forked_by UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL,
|
||||
CONSTRAINT uq_repo_fork UNIQUE (parent_repo_id, fork_repo_id)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_repo_fork_parent ON repo_fork (parent_repo_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_repo_fork_fork ON repo_fork (fork_repo_id);
|
||||
Reference in New Issue
Block a user