About | Technologies | Requirements | Getting started | License | Author
Client-side CRUD operations between indexedDB and a server.
The following tools were used in this project:
- idbx - an indexedDB wrapper
import * as idbx from "https://deno.land/x/idbx/main.ts";
import { SyncedDB } from "https://deno.land/x/synceddb/main.ts";
// create a database
const dbreq = idbx.open('my-database', 1);
// create a store
dbreq.upgrade((event) => {
const target = event.target as IDBOpenDBRequest;
const db = target.result;
SyncedDB.createStore(db, "mystore");
});
// wait for DB to initialize
const db = await dbreq.ready;
// create a synceddb instance
const syncdb = new SyncedDB(db, "mystore", {
keyName: "id",
// Default Settings:
// url: location.origin,
// autoSync: false,
// createPath: "/api/create",
// readPath: "/api/read",
// updatePath: "/api/update",
// deletePath: "/api/delete",
// readAllPath: "/api/read_all",
// syncPath: "/api/sync",
});
const result = await syncdb.create({
title: "Awesome!",
description: "Probably a reinvention of the wheel ;-P"
});
// case 1 (online): writes entry into the indexedDB store and send the entry to the server
// sync_action: "none", sync_status: "synced"
// case 2 (offline): writes entry into the indexedDB store and creates a temporary ID
// sync_action: "create", sync_status: "unsynced"
This project is under license from MIT. For more details, see the LICENSE file.
Made by Mario Stöcklein