Code Monkey home page Code Monkey logo

localtable's Introduction

localtable

A thin database-like wrapper over window.localStorage.

You create a table (or tables) to store many similar rows in, & localtable handles all the usual CRUD/database-style operations.

Usage

import { LocalTable } from "localtable";

const records = new LocalTable(
    window.localStorage, // ...or 'window.sessionStorage', or any other 'Storage'-like object.
    "records", // The name of the table.
    {
        fields: [
            { name: "firstName", type: "str" },
            { name: "lastName", type: "str" },
            { name: "createdAt", type: "timestamp" },
            { name: "loginCount", type: "int", default: 0, required: false },
        ]
    }
);

console.log(`Initial count: ${records.count()}`);

records.insert(
    1, // An ID, which can be any unique JSON-serializable identifier
    {
        firstName: "Daniel",
        lastName: "Lindsley",
        createdAt: Date.now(),
    }
);
records.insert(2, {
    firstName: "Jane",
    lastName: "Doe",
    createdAt: Date.now(),
});

console.log(`New count: ${records.count()}`);

// Pull specific rows by ID.
let dl = records.get(1);

console.log(`Hello, ${dl.firstName}!`);

// Update information.
records.update(2, {
    firstName: "Jenn",
    loginCount: 3,
});

// Grab all the rows in the table & iterate.
for(const record of records.all()) {
    console.log(`Saw #${record.id}: ${record.firstName} - ${record.loginCount}`);
}

// Or filter down to specific data.
const filtered = records.filter({
    createdAt: {">=": Date.parse("2021-11-24")},
    loginCount: {"<": "2"},
});
console.log(filtered.length); // 1
console.log(filtered[0].firstName); // "Daniel"
console.log(filtered[0].loginCount); // 0

// Delete a single row.
records.delete(1);

// Or drop the whole table.
records.drop();

API

const table = new LocalTable(store, tableName, options) - Creates a new LocalTable.

table.create() - Sets up the table in the storage.

table.drop() - Deletes the table from storage.

table.get(id) - Fetches a row from the table by ID.

table.insert(id, data) - Inserts a new row into the table.

table.update(id, data) - Updates (or inserts) a row in the table.

table.delete(id) - Deletes a row from the table.

table.exists(id) - Checks if a row is present in the table. Returns true or false.

table.count() - Returns a count of the number of records in the table.

table.all() - Returns all records in the table.

table.filter(filterDataOrFunc) - Returns a filtered set of data from the table. If a plain object is provided, an AND-style filtering of the data is performed. If a function is provided, it should take a single data parameter & should return true/false if the row should be included in the output.

Testing

npm test

Generating Docs

jsdoc -r -d ~/Desktop/out --package package.json --readme README.md src

License

New BSD

localtable's People

Contributors

toastdriven avatar

Stargazers

Gutierri Barboza avatar Ville Säävuori avatar Jeff Triplett avatar Cole Howard avatar

Watchers

 avatar James Cloos avatar Rui Neto avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.