♻️ refactor: update codeowner-enforcement.ts

swadhinbiswas committed 3 months ago
10229ec
1 parent 6d09753
commit 10229ec
1 file changed
+13 -2
▼src/pages/api/repos/[owner]/[repo]/pulls/[number]/codeowner-enforcement.ts
+13-2
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
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
102
requiredBy: {
94
103
reviewPolicy: false,
95
104
branchRule: false,
105
+ prState: false,
96
106
},
97
107
activeRule: matchingRule
98
108
? {
127
137
requiredBy: {
128
138
reviewPolicy: requiredByReviewPolicy,
129
139
branchRule: requiredByBranchRule,
140
+ prState: requiredByPRState,
130
141
},
131
142
activeRule: matchingRule
132
143
? {
133
144