MemoryDBProviderclass

new MemoryDBProvider<I, T>()
Return
MemoryDBProvider<I, T>
Synchronous in-memory database provider, storing each collection in a MemoryTable.

Synchronous in-memory database provider, storing each collection in a MemoryTable.

  • Extremely fast (ideal as the cache behind CacheDBProvider!), but does not persist data after the process or browser window closes.
  • Identity-preserving: getItem() etc. return the exact same object instance that was passed into setItem().
  • Supports live subscriptions, so it can back ItemStore / QueryStore reads.

A fully in-memory DBProvider. MemoryDBProvider stores every collection in plain memory — fast, with no persistence. It is ideal for tests and prototypes, and it is also the mirror layer that CacheDBProvider keeps in sync.

Unlike the SQL providers, MemoryDBProvider supports realtime sequences (getItemSequence, getQuerySequence).

Usage

ts
import { MemoryDBProvider } from "shelving/db";

const provider = new MemoryDBProvider();

const id = await provider.addItem(POSTS, { title: "Hello", body: "First post.", published: false });
const post = await provider.getItem(POSTS, id);

// Realtime — emits whenever the item changes.
for await (const next of provider.getItemSequence(POSTS, id)) {
  console.log(next);
}

Examples

const provider = new MemoryDBProvider();
 const id = await provider.addItem(users, { name: "Dave" });

Methods

Go

MemoryDBProvider.getTable()method

Get (or lazily create) the MemoryTable backing a collection.

getTable(collection: Collection<string, II, TT>): MemoryTable<II, TT>
Go

MemoryDBProvider.setItems()method

Set (insert or overwrite) several whole items in a collection at once.

setItems(collection: Collection<string, II, TT>, items: Items<II, TT>): void