132 lines
3.6 KiB
HTML
132 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>JSDoc: Source: NodeQuery.js</title>
|
|
|
|
<script src="scripts/prettify/prettify.js"> </script>
|
|
<script src="scripts/prettify/lang-css.js"> </script>
|
|
<!--[if lt IE 9]>
|
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
<![endif]-->
|
|
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
|
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="main">
|
|
|
|
<h1 class="page-title">Source: NodeQuery.js</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section>
|
|
<article>
|
|
<pre class="prettyprint source linenums"><code>const QueryBuilder = require('./QueryBuilder');
|
|
|
|
// Map config driver name to code class name
|
|
const dbDriverMap = new Map([
|
|
['my', 'Mysql'],
|
|
['mysql', 'Mysql'],
|
|
['maria', 'Mysql'],
|
|
['mariadb', 'Mysql'],
|
|
['firebird', 'Firebird'],
|
|
['postgresql', 'Pg'],
|
|
['postgres', 'Pg'],
|
|
['pg', 'Pg'],
|
|
['sqlite3', 'Sqlite'],
|
|
['sqlite', 'Sqlite'],
|
|
['sqlserver', 'MSSQLServer'],
|
|
['mssql', 'MSSQLServer']
|
|
]);
|
|
|
|
/**
|
|
* Class for connection management
|
|
*
|
|
* @param {object} config - connection parameters
|
|
*/
|
|
class NodeQuery {
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param {object} config - connection parameters
|
|
* @param {string} config.driver - the database driver to use, such as mysql, sqlite, mssql, or pgsql
|
|
* @param {object|string} config.connection - the connection options for the database
|
|
* @param {string} config.connection.host - the ip or hostname of the database server
|
|
* @param {string} config.connection.user - the user to log in as
|
|
* @param {string} config.connection.password - the password to log in with
|
|
* @param {string} config.connection.database - the name of the database to connect to
|
|
* @example let nodeQuery = require('ci-node-query')({
|
|
* driver: 'mysql',
|
|
* connection: {
|
|
* host: 'localhost',
|
|
* user: 'root',
|
|
* password: '',
|
|
* database: 'mysql'
|
|
* }
|
|
* });
|
|
* @example let nodeQuery = require('ci-node-query')({
|
|
* driver: 'sqlite',
|
|
* connection: ':memory:'
|
|
* });
|
|
*/
|
|
constructor (config) {
|
|
this.instance = null;
|
|
|
|
if (config !== undefined) {
|
|
const driverName = dbDriverMap.get(config.driver);
|
|
|
|
if (!driverName) {
|
|
throw new Error(`Selected driver (${config.driver}) does not exist!`);
|
|
}
|
|
|
|
const driver = require(`./drivers/${driverName}`);
|
|
const Adapter = require(`./adapters/${driverName}`);
|
|
|
|
this.instance = new QueryBuilder(driver, Adapter(config));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return an existing query builder instance
|
|
*
|
|
* @return {QueryBuilder} - The Query Builder object
|
|
*/
|
|
getQuery () {
|
|
if (this.instance == null) {
|
|
throw new Error('No Query Builder instance to return');
|
|
}
|
|
|
|
return this.instance;
|
|
}
|
|
}
|
|
|
|
module.exports = config => new NodeQuery(config);
|
|
</code></pre>
|
|
</article>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<nav>
|
|
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-drivers_MariaDB.html">drivers/MariaDB</a></li><li><a href="module-drivers_MSSQLDriver.html">drivers/MSSQLDriver</a></li><li><a href="module-drivers_Mysql.html">drivers/Mysql</a></li><li><a href="module-drivers_Pg.html">drivers/Pg</a></li><li><a href="module-drivers_Sqlite.html">drivers/Sqlite</a></li></ul><h3>Classes</h3><ul><li><a href="NodeQuery.html">NodeQuery</a></li><li><a href="QueryBuilder.html">QueryBuilder</a></li><li><a href="Result.html">Result</a></li></ul>
|
|
</nav>
|
|
|
|
<br class="clear">
|
|
|
|
<footer>
|
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Mon Feb 12 2018 14:58:25 GMT-0500 (EST)
|
|
</footer>
|
|
|
|
<script> prettyPrint(); </script>
|
|
<script src="scripts/linenumber.js"> </script>
|
|
</body>
|
|
</html>
|