UNPKG

sql-dao

Version:

database access objects for sql databases

129 lines (111 loc) 2.58 kB
/* eslint-disable no-unused-vars */ const WhereClause = require('./WhereClause') const Join = require('./Join') const TableShema = require('./tableShema/TableShema') /* eslint-enable no-unused-vars */ /** * Defines a DatabaseConnection * @abstract */ class DatabaseConnection { /** * @param {*} config */ constructor (config) { /** * @member {*} */ this.config = config } /** * @returns {*} transaction * @abstract */ async createTransaction () {} /** * @param {*} transaction * @abstract */ async commitTransaction (transaction) {} /** * @param {*} transaction * @abstract */ async rollbackTransaction (transaction) {} /** * @param {string} query * @param {*} transaction * @abstract */ async sendQuery (query, transaction = undefined) {} /** * @param {string} tableName * @param {Map<string, any>} attributeMap <column, value> * @abstract */ createInsertQuery (tableName, attributeMap) {} /** * @param {string} tableName * @param {WhereClause} whereClause * @param {Join} joins * @abstract */ createFindQuery (tableName, whereClause = undefined, joins = []) {} /** * @param {string} tableName * @param {Map<string, any>} attributeMap <column, value> * @param {WhereClause} whereClause * @abstract */ createUpdateQuery (tableName, attributeMap, whereClause) {} /** * @param {string} tableName * @param {WhereClause} whereClause * @abstract */ createDeleteQuery (tableName, whereClause = undefined) {} /** * @param {string} tableName * @param {Map<string, any>} attributeMap <column, value> * @abstract */ createSaveQuery (tableName, attributeMap) {} /** * @params {*} result * @returns {number|string} * @abstract */ parsePrimaryKeyFromResult (result) {} /** * @params {*} result * @returns {number|string} * @abstract */ parseUpdatedRowsFromResult (result) {} /** * @params {*} result * @returns {number|string} * @abstract */ parseDeletedRowsFromResult (result) {} /** * @params {*} result * @params {string[]} attributes * @returns {Map<string, any>[]} <column, value> * @abstract */ parseAttributeMapsFromResult (result, attributes) {} /** * @param {string} * @returns {Promise<TableShema>} * @abstract */ async getTableShema (tableName) {} /** * @param {string} query * @param {array} values * @returns {string} */ prepareQuery (query, values) {} } module.exports = DatabaseConnection