Skip to content

TypeScript · correctness

store-insert-requires-on-conflict

eslint:store-insert-requires-on-conflict

Require an embedded SQL INSERT to carry ON CONFLICT; store writes replay under cron re-runs and queue redelivery and must be idempotent upserts.

Default
error
Fix
none
Languages
typescript

Why

A replayed bare insert can duplicate data or fail on a uniqueness constraint.

Fix

Add an appropriate `ON CONFLICT` action or supported replay-safe insert form.

Before / after

Executed by this rule’s unit tests.

Before

Do not issue a replay-unsafe insert

src/store.ts · focus
db.prepare(`INSERT INTO runs (id) VALUES (?)`).run();

After

Handle a replayed insert

src/store.ts · focus
db.prepare(`INSERT INTO runs (id) VALUES (?) ON CONFLICT(id) DO NOTHING`).run();

Message IDs

storeInsertRequiresOnConflict