mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-19 04:00:38 +09:00
fix(issues): replace non-null assertions with null checks in checkout re-read
Two code paths in issueService.checkout() used rows[0]! when re-reading an issue after stale-run adoption or self-ownership verification. If the issue is deleted concurrently (company cascade, API delete), rows[0] is undefined and withIssueLabels crashes with an unhandled TypeError. Replace both with rows[0] ?? null and throw notFound when the row is missing, returning a clean 404 instead of an uncaught exception.
This commit is contained in:
parent
ca8d35fd99
commit
c9ee8e7a7e
1 changed files with 4 additions and 2 deletions
|
|
@ -1469,7 +1469,8 @@ export function issueService(db: Db) {
|
||||||
expectedCheckoutRunId: current.checkoutRunId,
|
expectedCheckoutRunId: current.checkoutRunId,
|
||||||
});
|
});
|
||||||
if (adopted) {
|
if (adopted) {
|
||||||
const row = await db.select().from(issues).where(eq(issues.id, id)).then((rows) => rows[0]!);
|
const row = await db.select().from(issues).where(eq(issues.id, id)).then((rows) => rows[0] ?? null);
|
||||||
|
if (!row) throw notFound("Issue not found");
|
||||||
const [enriched] = await withIssueLabels(db, [row]);
|
const [enriched] = await withIssueLabels(db, [row]);
|
||||||
return enriched;
|
return enriched;
|
||||||
}
|
}
|
||||||
|
|
@ -1481,7 +1482,8 @@ export function issueService(db: Db) {
|
||||||
current.status === "in_progress" &&
|
current.status === "in_progress" &&
|
||||||
sameRunLock(current.checkoutRunId, checkoutRunId)
|
sameRunLock(current.checkoutRunId, checkoutRunId)
|
||||||
) {
|
) {
|
||||||
const row = await db.select().from(issues).where(eq(issues.id, id)).then((rows) => rows[0]!);
|
const row = await db.select().from(issues).where(eq(issues.id, id)).then((rows) => rows[0] ?? null);
|
||||||
|
if (!row) throw notFound("Issue not found");
|
||||||
const [enriched] = await withIssueLabels(db, [row]);
|
const [enriched] = await withIssueLabels(db, [row]);
|
||||||
return enriched;
|
return enriched;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue