Thin api wrapper around:
- better-sqlite3 on node version < 22
- node:sqlite on node version >= 22
- and bun:sqlite
to allow cross- runtime/engine usage.
It exposes only a subset of better-sqlite3 api because not everything is available in bun:sqlite/node:sqlite.
For example, since run returns undefined you can use the following queries to get changes and/or lastInsertRowid:
const changes = db.prepare("SELECT changes() AS changes;").get().changes; const lastInsertRowId = db .prepare("SELECT last_insert_rowid() AS id;") .get().id;Also, since db.pragma is not available in bun:sqlite, you can run:
// non-transactional db.prepare("PRAGMA foreign_keys = ON;").run();