DSAR
Persistence

SQLite

@dsar/persistence-sqlite provides a SQLite driver for DSAR persistence. Supports Bun and Node runtimes with in-memory default for fast local development and testing.

Installation

Package managerCommand
npmnpm install @dsar/persistence-sqlite
pnpmpnpm add @dsar/persistence-sqlite
yarnyarn add @dsar/persistence-sqlite
bunbun add @dsar/persistence-sqlite

Quickstart

Standalone Service

import { makeSqlitePersistenceService } from "@dsar/persistence-sqlite";
import { dsarInstance, runtimeReposFromPersistence } from "@dsar/backend";

// In-memory (default) — great for development and testing
const persistence = await makeSqlitePersistenceService();

// File-based — persists across restarts
const persistence = await makeSqlitePersistenceService({
	filename: "./dsar.db",
});

const runtime = dsarInstance({
	repos: runtimeReposFromPersistence(persistence),
});

Effect Layer Composition

import { Effect } from "effect";
import { Persistence, withTenant } from "@dsar/persistence";
import { makeSqlitePersistenceLayer } from "@dsar/persistence-sqlite";

const program = Persistence.pipe(
	Effect.flatMap((persistence) => persistence.requests.list()),
	withTenant("tenant-1"),
	Effect.provide(makeSqlitePersistenceLayer({ filename: ":memory:" }))
);

await Effect.runPromise(program);

When to Use SQLite

  • Local development — in-memory mode starts instantly with zero configuration
  • Testing — each test gets a fresh in-memory database
  • Lightweight deployments — single-server setups where Postgres is overkill
  • Prototyping — get a working DSAR instance running in seconds

For production multi-instance deployments, use Postgres instead.