@meganet/loopback-connector-kv-redis
Version:
The official Redis KeyValue connector for LoopBack
77 lines (59 loc) • 1.91 kB
JavaScript
// Copyright IBM Corp. 2016,2018. All Rights Reserved.
// Node module: loopback-connector-kv-redis
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
;
const connector = require('../..');
const juggler = require('loopback-datasource-juggler');
let DataSource = juggler.DataSource;
const SETTINGS = {
host: process.env.REDIS_HOST || 'localhost',
port: +process.env.REDIS_PORT || undefined,
connector: connector,
// produce nicer stack traces
showFriendlyErrorStack: true,
};
if (process.env.CI) {
// Try to avoid collisions when multiple CI jobs are running on the same host
// by picking a (semi)random database number to use.
SETTINGS.db = process.pid % 16;
}
function createDataSource(options) {
const settings = Object.assign({}, SETTINGS, options);
return new DataSource(settings);
}
module.exports = createDataSource;
let invalidPort = 4; // invalid port where nobody is listening
createDataSource.failing = function(options) {
const settings = Object.assign({
host: '127.0.0.1',
port: invalidPort++,
// disable auto-reconnect
retryStrategy: null,
reconnectOnError: null,
}, options);
return createDataSource(settings);
};
createDataSource.json = function(options) {
const settings = Object.assign({
packer: 'json',
}, options);
return createDataSource(settings);
};
createDataSource.jsonWithHexBuffers = function(options) {
const settings = Object.assign({
packer: 'json',
bufferEncoding: 'hex',
}, options);
return createDataSource(settings);
};
createDataSource.resetDataSourceClass = function(ctor) {
DataSource = ctor || juggler.DataSource;
};
beforeEach(function clearDatabase(done) {
const ds = createDataSource();
ds.connector.execute('FLUSHDB', function(err) {
if (err) return done(err);
ds.disconnect(done);
});
});