♻️ refactor: update ci-gates.ts
swadhinbiswas committed 3 months ago
4647d12
1 parent a8ef223
commit 4647d12
1 file changed
+21 -4
Showing 1 changed file+21-4
▼src/lib/ci-gates.ts
+21-4
| @@ -210,18 +210,35 @@ export async function evaluateGates(prId: string): Promise<{ | ||
210 | 210 | const approvals = pr.reviews?.filter(r => r.state === "approved") || []; |
211 | 211 | const changesRequested = pr.reviews?.some(r => r.state === "changes_requested"); |
212 | 212 | |
213 | - if (approvals.length === 0) { | |
213 | + const requiredReviewers = await db.query.pullRequestReviewers?.findMany({ | |
214 | + where: and( | |
215 | + eq(schema.pullRequestReviewers.pullRequestId, prId), | |
216 | + eq(schema.pullRequestReviewers.isRequired, true) | |
217 | + ) | |
218 | + }) || []; | |
219 | + | |
220 | + const missingRequired = requiredReviewers.filter(rr => !approvals.some(a => a.reviewerId === rr.userId)); | |
221 | + | |
222 | + if (changesRequested) { | |
214 | 223 | results.push({ |
215 | 224 | passed: false, |
216 | 225 | gateName: "Review", |
217 | - message: "At least one approval required", | |
226 | + message: "Changes requested by reviewer", | |
218 | 227 | details: { gateType: "review" }, |
219 | 228 | }); |
220 | - } else if (changesRequested) { | |
229 | + } else if (missingRequired.length > 0) { | |
221 | 230 | results.push({ |
222 | 231 | passed: false, |
223 | 232 | gateName: "Review", |
224 | - message: "Changes requested by reviewer", | |
233 | + message: `Missing ${missingRequired.length} required approval(s)`, | |
234 | + details: { gateType: "review", missingCount: missingRequired.length }, | |
235 | + }); | |
236 | + } else if (approvals.length === 0 && requiredReviewers.length === 0) { | |
237 | + // Fallback: if no specific reviewers are required, still require at least 1 approval | |
238 | + results.push({ | |
239 | + passed: false, | |
240 | + gateName: "Review", | |
241 | + message: "At least one approval required", | |
225 | 242 | details: { gateType: "review" }, |
226 | 243 | }); |
227 | 244 | } else { |
228 | 245 | |