commit bc9b5ec2894e9e9f85ab4aca67c25ba1bd0e9480 Author: Sven Slootweg Date: Mon May 20 15:17:28 2019 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97008e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +yarn.lock \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..a0d8d19 --- /dev/null +++ b/index.js @@ -0,0 +1,23 @@ +"use strict"; + +const Promise = require("bluebird"); +const mapObj = require("map-obj"); +const databaseError = require("database-error"); + +function wrapMethod(value) { + if (typeof value === "function") { + return function wrappedDatabaseMethod(...args) { + return Promise.try(() => { + return value.call(this, ...args); + }).catch(databaseError.rethrow); + }; + } else { + return value; + } +} + +module.exports = function createDatabaseModule(methods) { + return mapObj(methods, (key, value) => { + return [key, wrapMethod(value)]; + }); +}; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..36f6c74 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "node-database-module", + "version": "0.1.0", + "main": "index.js", + "repository": "http://git.cryto.net/joepie91/node-database-module.git", + "author": "Sven Slootweg ", + "license": "WTFPL OR CC0-1.0", + "dependencies": { + "bluebird": "^3.5.4", + "database-error": "^2.0.1", + "map-obj": "^3.1.0" + } +}