4.0.0 • Published 7 months ago

@varasto/sqlite-storage v4.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@varasto/sqlite-storage

npm

Implementation of storage which stores data into SQLite database.

Each namespace in the storage is an table in the database, with following kind of schema:

CREATE TABLE IF NOT EXISTS "namespace" (
  key TEXT NOT NULL PRIMARY KEY,
  value TEXT NOT NULL,
  UNIQUE (key) ON CONFLICT REPLACE
)

Installation

$ npm install --save @varasto/sqlite-storage

Usage

The package provides an function called createSqliteStorage, which takes an SQLite database instance provided by SQLite library as argument. The function then returns an storage implementation that is capable of storing JSON objects into the database, where each value is identified by namespace and key, that must be valid URL slugs.

Basic usage of SQLite storage looks like this:

import { createSqliteStorage } from '@varasto/sqlite-storage';
import { open } from 'sqlite';
import sqlite3 from 'sqlite3';
import { JsonObject } from 'type-fest';

const database = await open({
  filename: './data.db',
  driver: sqlite3.Database,
});
const storage = createSqliteStorage(database);

The function also takes an optional configuration object, which supports these settings:

PropertyDefault valueDescription
dropEmptyTablesfalseIf true, once an namespace is detected to be empty, it's associated table is automatically dropped.

Custom serializers

By default, JSON.stringify is used for serializing data written to file system and JSON.parse is used for deserializing data retrieved from file system. However, you can also use your own custom serialization functions by passing them as options to the createSqliteStorage function.

const storage = createSqliteStorage(
  database,
  {
    serialize: (data: string): JsonObject => ({}),
    deserialize: (data: JsonObject): string => "",
  }
);
4.0.0

7 months ago

3.0.0

7 months ago

2.0.0

12 months ago

1.0.0

12 months ago