concurrent-file-store

0.5.1 • Public • Published

concurrent-file-store Build Status npm version Dependency Status

Multi-process safe simple data store, using the filesystem for storage

Usage

import cfs from 'concurrent-file-store';
 
const store = cfs('path/to/store/folder');
 
// Create a new object
store.create({
        count: 0;
    })
    .then(console.info)  // Object with id field
    .catch(console.error);
 
 
// Read an object
store.read('fg45f-342f')
    .then(console.info) // object
    .catch(console.error);
 
 
// Update an object
store.update('fg45f-342f')
    .then(obj => {
        return obj.count++;
    })
    .then(store.save)
    .catch(error => {
        console.error(error);
        store.free('fg45f-342f');
    });
 
 
// Delete an object
store.delete('fg45f-342f')
    .catch(console.error);
 
 
// List object ids
store.list()
    .then(console.info)  // Array of ids
    .catch(console.error);
 
 
// Filter the store
store.filter(obj => obj.name === 'Bob' && obj.count > 3)
    .then(console.info)  // Array of Objects
    .catch(console.error);

Install

npm install concurrent-file-store --save

API

  • const store = new cfs(storePath[, options]) - Creates a store instance

    • storePath Path to a filesystem directory to contain the store's files

    Options

    • idField: id Property to use for the Identity property of each stored object
    • idFunction: shortid.generate Function used to generate a unique id for each object added to the store. function(object)
    • lockTimeout: 30000 How long (in miliseconds) an operation with wait to acquire a lock on an object. Locks are assumed to have expired after 10 * lockTimeout

    Returns a store instance (see below)

  • store.create(object) - Creates an object in the store, giving it a unique Identity property

    • object A JSON serialisable object to save in the store

    Returns a Promise with the stored object with the added Identity property

  • store.read(id) - Reads an object from the store

    • id The Identity property value for the object to retrive

    Returns a Promise with the stored object

  • store.update(id) - Update an object in the store

    • id The Identity property value for the object to update

    Returns a Promise with the stored object, to be used with save or free

  • store.save(object) - Used with update to save an updated object

    • object A JSON serialisable object to save in the store

    Returns a Promise with the stored object

  • store.free(id) - Used with update to release a lock on an object

    • id The Identity property value for the object to free

    Returns a Promise

  • store.delete(id) - Delete an object from the store

    • id The Identity property value for the object to delete

    Returns a Promise

  • store.list() - List the Identity values of all the objects in the store

    Returns a Promise with an array of object Indentities

  • store.filter(func) - Filter the store and return an array of matching objects

    • func - Function to filter the objects by

    Returns a Promsie with an array of matching objects

Test

npm install
npm test

Readme

Keywords

none

Package Sidebar

Install

npm i concurrent-file-store

Weekly Downloads

8

Version

0.5.1

License

MIT

Last publish

Collaborators

  • bealearts