Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const mysql = require('mysql2');
- class MysqlGateway {
- constructor () {
- this.connection = null;
- }
- createConnection (host, database, user, password, options) {
- let connectionInfo = {
- connectionLimit: options.connectionLimit || 500,
- acquireTimeout: options.connectTimeout || 10000,
- connectTimeout: options.connectTimeout || 10000,
- timeout: options.requestTimeout || 40000,
- host: host,
- database: database,
- user: user,
- password: password,
- multipleStatements: true,
- dateStrings: true
- };
- console.log('Connection info:' + JSON.stringify(connectionInfo));
- return this.connection = mysql.createPool(connectionInfo);
- }
- executeQuery (query) {
- return new Promise((resolve, reject) => {
- if (this.connection === null) {
- let error = new Error('Connection is null');
- error.code = 500;
- return reject(error);
- }
- this.connection.query(query, (err, res) => {
- if (err && err.code === 'ER_LOCK_DEADLOCK') {
- this.executeQuery(query).then(
- (res) => resolve(parseResult(res)),
- (error) => reject(error));
- } else if (err) {
- reject(err);
- } else {
- resolve(parseResult(res));
- }
- });
- });
- }
- async transaction (fields) {
- return await this.executeQuery('START TRANSACTION;');
- }
- add (table, fields) {
- let into = '';
- let values = '';
- for (let name in fields) {
- into += prepareName(name) + ',';
- values += prepareValue(fields[name]) + ',';
- }
- into = into.slice(0, -1);
- values = values.slice(0, -1);
- const query = `INSERT INTO ${table} (${Name}) VALUES (${Sallary});`;
- return this.executeQuery(query);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement