JSPM

storage-sql

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q19686F
  • License MIT

A TypeScript library for SQL-like storage and query building in JavaScript/TypeScript projects

Package Exports

  • storage-sql

Readme

πŸ“¦ StoreSQL & QueryBuilder

A simple and strongly typed library to manage data in local or session storage (e.g., localStorage or sessionStorage) with a SQL-inspired interface.
Supports direct CRUD operations or the QueryBuilder for chainable queries.


✨ Features

  • Strong TypeScript typing πŸ›‘οΈ
  • Simple and expressive API 🎯
  • Supports Create, Read, Update, Delete
  • QueryBuilder for chainable queries
  • Local storage (localStorage) support with the ability to extend to other drivers

Installation

npm install storesql

Basic Usage

Defining the store collection

interface User {
  name: string;
  age: number;
}

interface StoresCollection {
  users: User[];
}

Creating the store

import { StoreSQL } from "./store-sql.js";

const store = new StoreSQL<StoresCollection>('app::', 'local');

store.create('users', [
  { name: 'Alice', age: 30 },
  { name: 'Bob', age: 25 },
  { name: 'Carol', age: 30 }
]);

CRUD Operations

//SELECT
store.select('users', ['name']);
//INSERT
store.insert('users', [{ name: 'John Doe', age: 40 }]);
//UPDATE
store.update('users', [{ name: 'John Doe', age: 39 }]);

Using QueryBuilder

import { QueryBuilder } from "./query-builder.js";

const qb = new QueryBuilder<StoresCollection>(store);

// SELECT
qb.from('users')
  .where({ age: 30 })
  .select(['name'])
  .exec();

// UPDATE
qb.from('users')
  .where({ name: 'Bob' })
  .update({ age: 26 });

// DELETE
qb.from('users')
  .where({ name: 'Carol' })
  .delete();

// SAVE
qb.from('users')
  .save({ name: 'Dave', age: 40 });

API

StoreSQL

Method Description
.create(storeName, data[]) Creates a store and adds initial records
.select(storeName, fields[]) Selects specific fields
.insert(storeName, data[]) Inserts new records
.update(storeName, data[]) Updates existing records

QueryBuilder

Method Description
.from(storeName) Defines the target store
.where(conditions) Filters records based on key/value
.select(fields[]) Selects specific fields
.update(data) Updates filtered records
.delete() Removes filtered records
.save(data) Inserts or updates a record

Data Flow Diagram

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚   StoreSQL  β”‚
 β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
        β”‚ CRUD Operations
        β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ QueryBuilderβ”‚
 β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
        β”‚ Chainable Queries
        β–Ό
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚  LocalStore     β”‚
 β”‚ (localStorage)  β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜