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 An object
passed to the initialization of the classconfig.db
- Optional An object
to initialize the database withconfig.filename
- Optional A filename
to initialize the database with. If both db
and filename
are passed in, the db
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);
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);
With a database
const imdb3 = new Imdb({
db: {
table1: {
key1: {
foo: 'bar'
}
}
}
});
imdb3.get('table1', 'key1').then(console.log);
get
Obtain a single record given an id. Returns null
if the record does not exist.
Arguments
config
- An object
. Each of its properties defines your get operationconfig.table
- A string
. The datastore table nameconfig.params
- An object. Each of its properties defines the get parametersconfig.params.id
- A string
. The ID of the item to fetch from the datastore
Example
const Imdb = require('screwdriver-datastore-imdb');
const imdb = new Imdb();
imdb.get({
table: 'fruits',
params: {
id: 'apple'
}
}).then(console.log);
imdb.get({
table: 'fruits',
params: {
id: 'celery'
}
}).then(console.log);
save
Save a record in the datastore. Returns saved data.
Arguments
config
- An object
. Each of its properties defines your save operationconfig.table
- A string
. The datastore table nameconfig.params
- An object. Each of its properties defines the save parametersconfig.params.id
- A string
. 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'
}
}
}
});
imdb.save({
table: 'favorites',
params: {
id: 'fruit',
data: {
name: 'pear'
}
}
}).then(console.log);
imdb.save({
table: 'favorites',
params: {
id: 'meal',
data: {
name: 'mac & cheese'
}
}
}).then(console.log);
update
Update an existing record in the datastore. Returns null
if the record does not exist.
Arguments
config
- An object
. Each of its properties defines your save operationconfig.table
- A string
. The datastore table nameconfig.params
- An object. Each of its properties defines the save parametersconfig.params.id
- A string
. 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'
}
}
}
});
imdb.update({
table: 'meals',
params: {
id: 'lunch',
data: {
drink: 'ice tea'
}
}
}).then(console.log);
imdb.save({
table: 'meals',
params: {
id: 'breakfast',
data: {
main: 'milk & cereal'
}
}
}).then(console.log);
scan
Fetch multiple records from the datastore. Returns []
if the table is empty. Rejects with an error if table does not exist.
Arguments
config
- An object
. Each of its properties defines your scan operationconfig.table
- A string
. 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
- An integer
. This is the number of items per pageconfig.paginate.page
- An integer
. 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();
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 1,
count: 2
}
}).then(console.log);
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 2,
count: 2
}
}).then(console.log);
imdb.scan({
table: 'primarycolors',
params: {},
paginate: {
page: 3,
count: 2
}
}).then(console.log);
datastore.scan({
table: 'unicorns',
params: {},
paginate: {
page: 2,
count: 2
}
}).catch(console.error);
Testing
npm test
License
Code licensed under the BSD 3-Clause license. See LICENSE file for terms.