concurrent-file-store v0.5.1
concurrent-file-store

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 --saveAPI
const store = new cfs(storePath[, options])- Creates a store instancestorePathPath to a filesystem directory to contain the store's filesOptions
idField:idProperty to use for the Identity property of each stored objectidFunction:shortid.generateFunction used to generate a unique id for each object added to the store.function(object)lockTimeout:30000How long (in miliseconds) an operation with wait to acquire a lock on an object. Locks are assumed to have expired after 10 *lockTimeoutReturns a store instance (see below)
store.create(object)- Creates an object in the store, giving it a unique Identity propertyobjectA JSON serialisable object to save in the storeReturns a Promise with the stored object with the added Identity property
store.read(id)- Reads an object from the storeidThe Identity property value for the object to retriveReturns a Promise with the stored object
store.update(id)- Update an object in the storeidThe Identity property value for the object to updateReturns a Promise with the stored object, to be used with
saveorfree
store.save(object)- Used withupdateto save an updated objectobjectA JSON serialisable object to save in the storeReturns a Promise with the stored object
store.free(id)- Used withupdateto release a lock on an objectidThe Identity property value for the object to freeReturns a Promise
store.delete(id)- Delete an object from the storeidThe Identity property value for the object to deleteReturns a Promise
store.list()- List the Identity values of all the objects in the storeReturns a Promise with an array of object Indentities
store.filter(func)- Filter the store and return an array of matching objectsfunc- Function to filter the objects byReturns a Promsie with an array of matching objects
Test
npm install
npm test