AppView in a box as a Vite plugin thing hatk.dev

fix: batch backfill validation skip logs into single summary event

Instead of emitting one log per invalid record during backfill, collect
counts by collection and emit a single validation_skips event per repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+6 -6
+6 -6
packages/hatk/src/backfill.ts
··· 237 237 // Insert records in chunks to limit memory usage 238 238 const CHUNK_SIZE = 1000 239 239 let chunk: BulkRecord[] = [] 240 + const validationSkips: Record<string, number> = {} 240 241 for (const entry of entries) { 241 242 const collection = entry.path.split('/')[0] 242 243 if (!collections.has(collection)) continue ··· 254 255 255 256 const validationError = validateRecord(getLexiconArray(), collection, record) 256 257 if (validationError) { 257 - emit('backfill', 'validation_skip', { 258 - uri, 259 - collection, 260 - path: validationError.path, 261 - error: validationError.message, 262 - }) 258 + validationSkips[collection] = (validationSkips[collection] || 0) + 1 263 259 continue 264 260 } 265 261 ··· 280 276 } 281 277 if (chunk.length > 0) { 282 278 count += await bulkInsertRecords(chunk) 279 + } 280 + const totalSkips = Object.values(validationSkips).reduce((a, b) => a + b, 0) 281 + if (totalSkips > 0) { 282 + emit('backfill', 'validation_skips', { did, total: totalSkips, by_collection: validationSkips }) 283 283 } 284 284 await setRepoStatus(did, 'active', commit.rev, { handle }) 285 285 return count