simplestorage

Laravel Query Builder-like API on top of IndexedDB

View simplestorage on NPM

Install

npm install @cuteminded/simplestorage

Quick Start

import { openDatabase } from "@cuteminded/simplestorage";

const db = await openDatabase({
  name: "app-db",
  version: 1,
  stores: {
    users: {
      keyPath: "id",
      autoIncrement: true,
      indexes: [{ name: "email", keyPath: "email", options: { unique: true } }],
    },
  },
});

await db.table("users").insert([
  { name: "lizzy", email: "[email protected]", age: 25 },
  { name: "Alex", email: "[email protected]", age: 26 },
]);

const users = await db.table("users").select("id", "name", "age").where("age", ">=", 25).orderBy("name", "asc").get();

console.log(users);

API

openDatabase(options)

  • name (string, required)
  • version (number, default: 1)
  • stores (object)

Store config example:

{
  users: {
    keyPath: "id",
    autoIncrement: true,
    indexes: [
      { name: "email", keyPath: "email", options: { unique: true } }
    ]
  }
}

Query builder methods

  • table(name)
  • select(...columns)
  • where(column, value)
  • where(column, operator, value)
  • orWhere(column, value)
  • orWhere(column, operator, value)
  • whereIn(column, values)
  • whereNull(column)
  • whereNotNull(column)
  • orderBy(column, direction)
  • limit(number)
  • offset(number)
  • get()
  • first()
  • find(id)
  • insert(data | data[])
  • update(values)
  • delete()
  • truncate()