import { repoDb } from "./scoped-db";
import { matchesGlob } from "~/lib/glob";
import type { Permission } from "~/lib/types";
export type BranchProtectionRow = {
id: string;
repo_id: string;
pattern: string;
require_pull_request: number;
required_approvals: number;
required_checks: string;
dismiss_stale_reviews: number;
allow_deletions: number;
allow_force_pushes: number;
enforce_admins: number;
require_code_owner_review: number;
created_at: number;
};
export type BranchProtection = {
id: string;
pattern: string;
requirePullRequest: boolean;
requiredApprovals: number;
requiredChecks: string[];
dismissStaleReviews: boolean;
allowDeletions: boolean;
allowForcePushes: boolean;
enforceAdmins: boolean;
requireCodeOwnerReview: boolean;
};
export function toProtection(row: BranchProtectionRow): BranchProtection {
return {
id: row.id,
pattern: row.pattern,
requirePullRequest: row.require_pull_request === 1,
requiredApprovals: row.required_approvals,
requiredChecks: JSON.parse(row.required_checks),
dismissStaleReviews: row.dismiss_stale_reviews === 1,