Back to Remix

data-table-sqlite

packages/data-table-sqlite/README.md

2.11.12.5 KB
Original Source

data-table-sqlite

SQLite adapter for remix/data-table. Use this package when you want data-table APIs backed by better-sqlite3.

Features

  • Native better-sqlite3 Integration: Works well for local and embedded deployments
  • Full data-table API Support: Queries, relations, writes, and transactions
  • Adapter-Owned Compiler: SQL compilation lives in this adapter, with optional shared pure helpers from data-table
  • Migration DDL Support: Compiles and executes DataMigrationOperation operations for remix/data-table/migrations
  • SQLite Capabilities Enabled By Default:
    • returning: true
    • savepoints: true
    • upsert: true
    • transactionalDdl: true
    • migrationLock: false

Installation

sh
npm i remix better-sqlite3

Usage

ts
import Database from 'better-sqlite3'
import { createDatabase } from 'remix/data-table'
import { createSqliteDatabaseAdapter } from 'remix/data-table-sqlite'

let sqlite = new Database('app.db')
let db = createDatabase(createSqliteDatabaseAdapter(sqlite))

This is a good fit for local development, embedded deployments, and single-node services. Import any driver-specific types you need directly from better-sqlite3.

Adapter Capabilities

data-table-sqlite reports this capability set by default:

  • returning: true
  • savepoints: true
  • upsert: true
  • transactionalDdl: true
  • migrationLock: false

Advanced Usage

In-Memory Database For Tests

ts
import Database from 'better-sqlite3'
import { createDatabase } from 'remix/data-table'
import { createSqliteDatabaseAdapter } from 'remix/data-table-sqlite'

let sqlite = new Database(':memory:')
let db = createDatabase(createSqliteDatabaseAdapter(sqlite))

Capability Overrides For Fallback Testing

ts
import { createSqliteDatabaseAdapter } from 'remix/data-table-sqlite'

let adapter = createSqliteDatabaseAdapter(sqlite, {
  capabilities: {
    returning: false,
  },
})

License

See LICENSE