screwdriver-datastore-imdb
v1.0.18
Published
In-memory datastore for use with the Screwdriver API
Downloads
14
Readme
Screwdriver In-Memory Datastore
In-memory datastore for use with the Screwdriver API
Usage
npm install screwdriver-datastore-imdb
Initialization
The IMDB is an extension of the screwdriver-datastore-base class and implements all of the functions exposed.
The IMDB takes in an optional config parameter as a JSON object that will be used to initialize the in-memory database.
Arguments
config
- Optional Anobject
passed to the initialization of the classconfig.db
- Optional Anobject
to initialize the database withconfig.filename
- Optional Afilename
to initialize the database with. If bothdb
andfilename
are passed in, thedb
value will be ignored
const Imdb = require('screwdriver-datastore-imdb');
Without a database (will initialize with {} as default)
const imdb = new Imdb();
imdb.get('table1', 'key1').then(console.log); // Outputs null
With a filename
Example file some/path/to/config.json
:
{
table1: {
key1: {
foo: 'bar'
}
}
}
const imdb2 = new Imdb({
filename: 'some/path/to/config.json'
});
imdb2.get('table1', 'key1').then(console.log); // Outputs { foo: 'bar' }
With a database
const imdb3 = new Imdb({
db: {
table1: {
key1: {
foo: 'bar'
}
}
}
});
imdb3.get('table1', 'key1').then(console.log); // Outputs { foo: 'bar' }
get
Obtain a single record given an id. Returns null
if the record does not exist.
Arguments
config
- Anobject
. Each of its properties defines your get operationconfig.table
- Astring
. The datastore table nameconfig.params
- An object. Each of its properties defines the get parametersconfig.params.id
- Astring
. The ID of the item to fetch from the datastore
Example
const Imdb = require('screwdriver-datastore-imdb');
const imdb = new Imdb();
// successful get operation
imdb.get({
table: 'fruits',
params: {
id: 'apple'
}
}).then(console.log); // { color: 'red', type: 'fruit' }
// get operation on a non-existing entry
imdb.get({
table: 'fruits',
params: {
id: 'celery'
}
}).then(console.log); // null
save
Save a record in the datastore. Returns saved data.
Arguments
config
- Anobject
. Each of its properties defines your save operationconfig.table
- Astring
. The datastore table nameconfig.params
- An object. Each of its properties defines the save parametersconfig.params.id
- Astring
. The ID to associate the data withconfig.params.data
- An object. This is what will be saved in the datastore
const Imdb = require('screwdriver-datastore-imdb');
const imdb = new Imdb({
db: {
favorites: {
fruit: {
name: 'cherry'
}
}
}
});
// overwrite pre-existing entry
imdb.save({
table: 'favorites',
params: {
id: 'fruit',
data: {
name: 'pear'
}
}
}).then(console.log); // { id: 'fruit', name: 'cherry' }
// save new entry
imdb.save({
table: 'favorites',
params: {
id: 'meal',
data: {
name: 'mac & cheese'
}
}
}).then(console.log); // { id: 'meal', name: 'mac & cheese' }
update
Update an existing record in the datastore. Returns null
if the record does not exist.
Arguments
config
- Anobject
. Each of its properties defines your save operationconfig.table
- Astring
. The datastore table nameconfig.params
- An object. Each of its properties defines the save parametersconfig.params.id
- Astring
. The ID to associate the data withconfig.params.data
- An object. This is what will be saved in the datastore
const Imdb = require('screwdriver-datastore-imdb');
const imdb = new Imdb({
db: {
meals: {
lunch: {
main: 'sandwich',
side: 'chips'
}
}
}
});
// update entry
imdb.update({
table: 'meals',
params: {
id: 'lunch',
data: {
drink: 'ice tea'
}
}
}).then(console.log); // { id: 'lunch', main: 'sandwich', side: 'chips', drink: 'ice tea' }
// update a non-existing entry
imdb.save({
table: 'meals',
params: {
id: 'breakfast',
data: {
main: 'milk & cereal'
}
}
}).then(console.log); // null
scan
Fetch multiple records from the datastore. Returns []
if the table is empty. Rejects with an error if table does not exist.
Arguments
config
- Anobject
. Each of its properties defines your scan operationconfig.table
- Astring
. The datastore table nameconfig.params
- An object. Each of its properties defines the query parametersconfig.paginate
- An object. Each of its properties further defines the characteristics for paginationconfig.paginate.count
- Aninteger
. This is the number of items per pageconfig.paginate.page
- Aninteger
. This is the page number of the set you wish for the datastore to return
Example
const Imdb = require('screwdriver-datastore-imdb');
const imdb = new Imdb();
// valid scan
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 1,
count: 2
}
}).then(console.log); // [{ id: 0, name: 'blue' }, { id: 1, name: 'green'}]
// best effort based on given criteria
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 2,
count: 2
}
}).then(console.log); // [{ id: 2, name: 'red' }]
// no results found
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 3,
count: 2
}
}).then(console.log); // []
// scan operation on a non-existing entry
datastore.scan({
table: 'unicorns',
params: {},
paginate: {
page: 2,
count: 2
}
}).catch(console.error); // [Error: Invalid table name "unicorns"]
Testing
npm test
License
Code licensed under the BSD 3-Clause license. See LICENSE file for terms.