♻️ refactor: update codeowner-enforcement.ts
swadhinbiswas committed 3 months ago
10229ec
1 parent 6d09753
commit 10229ec
1 file changed
+13 -2
Showing 1 changed file+13-2
▼src/pages/api/repos/[owner]/[repo]/pulls/[number]/codeowner-enforcement.ts
+13-2
| @@ -49,7 +49,7 @@ export const GET: APIRoute = withErrorHandler(async ({ params, locals }) => { | ||
49 | 49 | eq(schema.pullRequests.repositoryId, repository.id), |
50 | 50 | eq(schema.pullRequests.number, number) |
51 | 51 | ), |
52 | - columns: { id: true, number: true, baseBranch: true, headBranch: true }, | |
52 | + columns: { id: true, number: true, baseBranch: true, headBranch: true, stateId: true }, | |
53 | 53 | }); |
54 | 54 | if (!pr) return notFound("Pull request not found"); |
55 | 55 | |
| @@ -71,11 +71,20 @@ export const GET: APIRoute = withErrorHandler(async ({ params, locals }) => { | ||
71 | 71 | }), |
72 | 72 | ]); |
73 | 73 | |
74 | + let requiredByPRState = false; | |
75 | + if (pr.stateId) { | |
76 | + const prState = await db.query.prStateDefinitions.findFirst({ | |
77 | + where: eq(schema.prStateDefinitions.id, pr.stateId), | |
78 | + columns: { requireCodeOwner: true } | |
79 | + }); | |
80 | + requiredByPRState = !!prState?.requireCodeOwner; | |
81 | + } | |
82 | + | |
74 | 83 | const matchingRule = |
75 | 84 | protectionRules.find((rule) => branchRuleMatches(rule.pattern, pr.baseBranch)) || null; |
76 | 85 | const requiredByReviewPolicy = !!reviewRequirements?.requireCodeOwner; |
77 | 86 | const requiredByBranchRule = !!matchingRule?.requireCodeOwnerReviews; |
78 | - const enforced = requiredByReviewPolicy || requiredByBranchRule; | |
87 | + const enforced = requiredByReviewPolicy || requiredByBranchRule || requiredByPRState; | |
79 | 88 | |
80 | 89 | const repoPath = await resolveRepoPath(repository.diskPath); |
81 | 90 | const comparison = await compareBranches(repoPath, pr.baseBranch, pr.headBranch); |
| @@ -93,6 +102,7 @@ export const GET: APIRoute = withErrorHandler(async ({ params, locals }) => { | ||
93 | 102 | requiredBy: { |
94 | 103 | reviewPolicy: false, |
95 | 104 | branchRule: false, |
105 | + prState: false, | |
96 | 106 | }, |
97 | 107 | activeRule: matchingRule |
98 | 108 | ? { |
| @@ -127,6 +137,7 @@ export const GET: APIRoute = withErrorHandler(async ({ params, locals }) => { | ||
127 | 137 | requiredBy: { |
128 | 138 | reviewPolicy: requiredByReviewPolicy, |
129 | 139 | branchRule: requiredByBranchRule, |
140 | + prState: requiredByPRState, | |
130 | 141 | }, |
131 | 142 | activeRule: matchingRule |
132 | 143 | ? { |
133 | 144 | |