db-conn-mssql
Version:
Database Connecton and Pool implementation for Microsoft SQL Server
118 lines • 4.37 kB
JavaScript
;
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