Skip to main content

SQLite Compat SDK

The @plugport/sqlite-compat package provides a drop-in replacement for the popular better-sqlite3 library. It translates synchronous SQLite queries into PlugPort's HTTP REST API, allowing SQLite-based applications to run on verifiable MonadDb storage without rewriting any SQL logic.

Installation

npm install @plugport/sqlite-compat
# or
pnpm add @plugport/sqlite-compat

Quick Start

1. Replace the Import

Swap better-sqlite3 for @plugport/sqlite-compat:

- import Database from 'better-sqlite3';
+ import Database from '@plugport/sqlite-compat';

2. Connect and Query

Pass the PlugPort HTTP endpoint instead of a local file path:

import Database from '@plugport/sqlite-compat';

// Connect to PlugPort instead of a local .db file
const db = new Database('http://localhost:8080', {
apiKey: 'pp_test_1234567890abcdef', // optional
timeout: 5000, // optional, ms
verbose: true, // optional, logs SQL
});

// Standard SQLite operations — same API as better-sqlite3
db.exec('CREATE TABLE users (name TEXT, age INTEGER)');

const insert = db.prepare('INSERT INTO users VALUES (?, ?)');
insert.run('Alice', 30);

const rows = db.prepare('SELECT * FROM users WHERE age >= ?').all(25);
console.log(rows);

Supported API Surface

MethodDescription
db.exec(sql)Execute raw SQL (DDL, DML)
db.prepare(sql)Create a prepared statement
stmt.run(...params)Execute a statement (INSERT, UPDATE, DELETE)
stmt.all(...params)Fetch all matching rows
stmt.get(...params)Fetch a single row

Limitations

  • Transactions are acknowledged but not atomic (MonadDb is eventual).
  • WAL mode and pragmas are no-ops.
  • Virtual tables are not supported.