@queuert/sqlite
v0.7.0
Published
SQLite adapter for Queuert job queue system
Maintainers
Readme
@queuert/sqlite
Experimental: This adapter's API may change significantly. For production use, consider @queuert/postgres.
SQLite state adapter for Queuert - a TypeScript library for database-backed job queues.
What does this do?
Queuert stores job state in your database. This adapter lets you use SQLite as your job storage backend. You provide a SqliteStateProvider implementation for your chosen SQLite client library (better-sqlite3, sqlite3, Drizzle, Prisma, Kysely, etc.).
The state adapter handles:
- Creating and updating jobs in SQLite tables
- Tracking job status (
blocked/pending→running→completed) - Managing job leases for distributed workers
- Storing job chains and blocker relationships
When to use SQLite
- Development & testing - Simple setup, no external services needed
- Small-scale deployments - Embedded applications, CLI tools, edge functions
- Single-process apps - When you don't need multiple distributed workers
For production with multiple workers across machines, consider PostgreSQL.
Requirements
- Node.js 22 or later
- TypeScript 5.0+ (recommended)
- SQLite 3.42 or later
Installation
npm install @queuert/sqlitePeer dependencies: queuert
Quick Start
import { createClient, createConsoleLog, defineJobTypeRegistry } from "queuert";
import { createSqliteStateAdapter } from "@queuert/sqlite";
const jobTypeRegistry = defineJobTypeRegistry<{
"send-email": { entry: true; input: { to: string }; output: { sent: true } };
}>();
const stateAdapter = await createSqliteStateAdapter({
stateProvider: mySqliteStateProvider, // You provide this - see below
});
await stateAdapter.migrateToLatest();
const client = await createClient({
stateAdapter,
registry: jobTypeRegistry,
log: createConsoleLog(),
});Configuration
const stateAdapter = await createSqliteStateAdapter({
stateProvider: mySqliteStateProvider,
tablePrefix: "queuert_", // Prefix for table names (default: "queuert_")
idType: "TEXT", // SQL type for job IDs (default: "TEXT")
idGenerator: () => crypto.randomUUID(), // ID generator function
checkForeignKeys: true, // Enable PRAGMA foreign_keys (default: true)
});State Provider
You need to implement a state provider that bridges your SQLite client with this adapter. The provider handles transaction management and SQL execution. See the examples for complete implementations.
API Reference
For the full API reference with types and signatures, see the @queuert/sqlite reference.
Documentation
For full documentation and examples, see the Queuert documentation.
