From 5d1d692f63171a5b4cabede2534aaba6b0bf2dd0 Mon Sep 17 00:00:00 2001 From: Trung Dang Date: Sun, 22 Jan 2017 16:15:56 +0800 Subject: [PATCH] add support for custom adapter registration --- lib/db.js | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/lib/db.js b/lib/db.js index fa1cb9a..0ced5b3 100644 --- a/lib/db.js +++ b/lib/db.js @@ -2,6 +2,7 @@ const NeDbClient = require('./clients/nedbclient'); const MongoClient = require('./clients/mongoclient'); +let _adapter; /** * Connect to current database @@ -10,20 +11,36 @@ const MongoClient = require('./clients/mongoclient'); * @param {Object} options * @returns {Promise} */ -exports.connect = function(url, options) { - if (url.indexOf('nedb://') > -1) { - // url example: nedb://path/to/file/folder - return NeDbClient.connect(url, options).then(function(db) { - global.CLIENT = db; - return db; - }); - } else if(url.indexOf('mongodb://') > -1) { - // url example: 'mongodb://localhost:27017/myproject' - return MongoClient.connect(url, options).then(function(db) { - global.CLIENT = db; - return db; - }); - } else { - return Promise.reject(new Error('Unrecognized DB connection url.')); +exports.connect = function (url, options) { + function handleConnectionSuccessfully(db) { + global.CLIENT = db; + return db; } -}; \ No newline at end of file + + let connect; + // We have custom adapter + if (_adapter) { + connect = NeDbClient.connect(url, options); + } + else + if (url.indexOf('nedb://') > -1) { + // url example: nedb://path/to/file/folder + connect = NeDbClient.connect(url, options); + } else if (url.indexOf('mongodb://') > -1) { + // url example: 'mongodb://localhost:27017/myproject' + connect = MongoClient.connect(url, options); + } else { + return Promise.reject(new Error('Unrecognized DB connection url.')); + } + + return connect.then(handleConnectionSuccessfully); +}; + +/** + * Register new adapter instead of using MongoDB and NeDB + * We assume that the adapter is valid and inherit DatabaseClient + * @param {DatabaseClient} adapter + */ +exports.registerAdapter = function handleAdapterRegister(adapter) { + _adapter = adapter; +} \ No newline at end of file