sembast_web 0.2.0+1 copy "sembast_web: ^0.2.0+1" to clipboard
sembast_web: ^0.2.0+1 copied to clipboard

outdated

NoSQL persistent embedded database for the Web on top of IndexedDB

Sembast for the web #

Preview: sembast for the Web, NoSQL persistent embedded database for the Web on top of IndexedDB.

Setup #

In pubspec.yaml

dependencies:
  sembast_web: '>=0.1.0'

Usage #

import 'package:sembast/sembast.dart';
import 'package:sembast_web/sembast_web.dart';

Future main() async {
  // Declare our store (records are mapd, ids are ints)
  var store = intMapStoreFactory.store();
  var factory = databaseFactoryWeb;

  // Open the database
  var db = await factory.openDatabase('test');

  // Add a new record
  var key =
      await store.add(db, <String, dynamic>{'name': 'Table', 'price': 15});

  // Read the record
  var value = await store.record(key).get(db);

  // Print the value
  print(value);

  // Close the database
  await db.close();
}

Features and bugs #

  • Alpha
  • Use int or key string only
  • Transactions are cross-tab safe (since 0.1.0+4)
  • Codec are not supported. Web is not safe anyway. Encrypt fields as needed.
  • Transactions must be indempotent (i.e. they must produce the same result if run twice) as they might run again in case of concurrent access.

How it works #

Like sembast the whole database is loaded into memory from indexeddb. It notifies cross tabs using localStorage. data is incrementally updated from indexeddb. If a transaction is ran after some changes happens, new data is loaded and transaction is ran again.

55
likes
40
points
73.5k
downloads

Publisher

verified publishertekartik.com

Weekly Downloads

NoSQL persistent embedded database for the Web on top of IndexedDB

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

idb_shim, sembast

More

Packages that depend on sembast_web