BOM export pack: previous revision query returns the same revision (always empty diff) #5

Closed
opened 2026-05-09 00:26:28 +00:00 by Mark · 0 comments
Owner

Severity: Medium

File: src/app/api/boms/[bomId]/export/route.ts (lines 156-159)

Issue: When generating an export pack, the "previous revision" query uses desc ordering which returns the LATEST revision first — the same as latestRevision. So the diff comparison is always between the same revision, producing empty diff results:

const previousRevision = await db.query.bomRevisions.findFirst({
  where: eq(bomRevisions.bomId, bomId),
  orderBy: desc(bomRevisions.revNumber),  // Returns LATEST, same as latestRevision
});

// This check: previousRevision.id !== latestRevision.id -> ALWAYS false
// So the diff is always skipped

Effect: The _CHANGES.md file is never included in export packs, and the diff report is always null. Users never see revision diffs in their exported ZIP.

Fix: Fetch the second-most-recent revision by filtering for revNumber < latestRevision.revNumber:

const previousRevision = await db.query.bomRevisions.findFirst({
  where: and(
    eq(bomRevisions.bomId, bomId),
    lt(bomRevisions.revNumber, latestRevision.revNumber)
  ),
  orderBy: desc(bomRevisions.revNumber),
});
## Severity: Medium **File:** `src/app/api/boms/[bomId]/export/route.ts` (lines 156-159) **Issue:** When generating an export pack, the "previous revision" query uses `desc` ordering which returns the LATEST revision first — the same as `latestRevision`. So the diff comparison is always between the same revision, producing empty diff results: ```typescript const previousRevision = await db.query.bomRevisions.findFirst({ where: eq(bomRevisions.bomId, bomId), orderBy: desc(bomRevisions.revNumber), // Returns LATEST, same as latestRevision }); // This check: previousRevision.id !== latestRevision.id -> ALWAYS false // So the diff is always skipped ``` **Effect:** The `_CHANGES.md` file is never included in export packs, and the diff report is always null. Users never see revision diffs in their exported ZIP. **Fix:** Fetch the second-most-recent revision by filtering for `revNumber < latestRevision.revNumber`: ```typescript const previousRevision = await db.query.bomRevisions.findFirst({ where: and( eq(bomRevisions.bomId, bomId), lt(bomRevisions.revNumber, latestRevision.revNumber) ), orderBy: desc(bomRevisions.revNumber), }); ```
Mark 2026-07-31 07:34:20 +00:00
Sign in to join this conversation.
No description provided.