All files / lib Adapter.js

100% Statements 6/6
100% Branches 0/0
100% Functions 5/5
100% Lines 5/5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                            7x                     1x                   1x               2x       5x  
/**
 * Class that wraps database connection libraries
 *
 * @private
 * @param  {Promise} instance - The connection object
 */
class Adapter {
	/**
	 * Invoke an adapter
	 *
	 * @constructor
	 * @param  {Promise} instance - Promise holding connection object
	 */
	constructor (instance) {
		this.instance = instance;
	}
 
	/**
	 * Run the sql query as a prepared statement
	 *
	 * @param {String} sql - The sql with placeholders
	 * @param {Array} params - The values to insert into the query
	 * @return {Promise} - returns a promise resolving to the result of the database query
	 */
	execute (sql, params) {
		throw new Error('Correct adapter not defined for query execution');
	}
 
	/**
	 * Transform the adapter's result into a standard format
	 *
	 * @param {*} originalResult - the original result object from the driver
	 * @return {Result} - the new result object
	 */
	transformResult (originalResult) {
		throw new Error('Result transformer method not defined for current adapter');
	}
 
	/**
	 * Close the current database connection
	 * @return {void}
	 */
	close () {
		this.instance.then(conn => conn.end());
	}
}
 
module.exports = Adapter;