UNPKG

db-conn-mssql

Version:

Database Connecton and Pool implementation for Microsoft SQL Server

118 lines 4.37 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const tds = require("tedious"); class MssqlConnection { constructor(client) { this.client = client; } close() { return __awaiter(this, void 0, void 0, function* () { this.client.close(); delete this.client; }); } execute(sql, params) { return __awaiter(this, void 0, void 0, function* () { if (params === undefined) { params = []; } let rt = { data: [], affectedRows: 0 }; return new Promise((resolve, reject) => { const request = new tds.Request(sql, function (err, rowCount) { if (err) { reject(err); return; } rt.affectedRows = rowCount; }); request.on('error', function (err) { reject(err); }); request.on('row', function (columns) { const object = {}; for (const key in columns) { object[key] = columns[key].value; } rt.data.push(object); }); request.on("requestCompleted", function () { resolve(rt); }); if (Array.isArray(params)) { } else { this.addParameterObject(request, params); } this.client.execSql(request); }); }); } addParameterObject(request, params) { for (const name in params) { const value = params[name]; const type = isNaN(value) ? tds.TYPES.NVarChar : tds.TYPES.Int; request.addParameter(name, type, value); } } executeQuery(sql, params) { return __awaiter(this, void 0, void 0, function* () { const rt = yield this.execute(sql, params); return rt.data; }); } setAutoCommit(autoCommit) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { if (autoCommit) { resolve(); } else { this.client.beginTransaction(err => { if (err) { reject(err); return; } resolve(); }); } }); }); } commit() { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { this.client.commitTransaction(function (err) { if (err) { reject(err); return; } resolve(); }); }); }); } rollback() { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { this.client.rollbackTransaction(function (err) { if (err) { reject(err); return; } resolve(); }); }); }); } } exports.MssqlConnection = MssqlConnection; //# sourceMappingURL=MssqlConnection.js.map