@tanstack/electron-db-sqlite-persistence
v0.1.5
Published
Electron SQLite persisted collection bridge for TanStack DB
Readme
@tanstack/electron-db-sqlite-persistence
Thin Electron bridge for TanStack DB SQLite persistence.
Public API
exposeElectronSQLitePersistence(...)(main process)createElectronSQLitePersistence(...)(renderer process)persistedCollectionOptions(...)(re-exported from core)
Use @tanstack/electron-db-sqlite-persistence/main and
@tanstack/electron-db-sqlite-persistence/renderer if you prefer
explicit process-specific entrypoints.
Main process
import { ipcMain } from 'electron'
import { createNodeSQLitePersistence } from '@tanstack/node-db-sqlite-persistence'
import { exposeElectronSQLitePersistence } from '@tanstack/electron-db-sqlite-persistence/main'
import Database from 'better-sqlite3'
const database = new Database(`./tanstack-db.sqlite`)
const persistence = createNodeSQLitePersistence({
database,
})
const dispose = exposeElectronSQLitePersistence({
ipcMain,
persistence,
})
// Call dispose() and database.close() during shutdown.Renderer process
import { createCollection } from '@tanstack/db'
import { ipcRenderer } from 'electron'
import {
createElectronSQLitePersistence,
persistedCollectionOptions,
} from '@tanstack/electron-db-sqlite-persistence'
type Todo = {
id: string
title: string
completed: boolean
}
const persistence = createElectronSQLitePersistence<Todo, string>({
ipcRenderer,
})
export const todosCollection = createCollection(
persistedCollectionOptions<Todo, string>({
id: `todos`,
getKey: (todo) => todo.id,
persistence,
schemaVersion: 1, // Per-collection schema version
}),
)Notes
- The renderer API mirrors other runtimes: one shared
create...Persistence. - Collection mode (
sync-presentvssync-absent) andschemaVersionare resolved per collection and forwarded across IPC automatically.
