UNPKG

2.4 kBJavaScriptView Raw
1/**
2 * joola.io
3 *
4 * Copyright Joola Smart Solutions, Ltd. <info@joo.la>
5 *
6 * Licensed under GNU General Public License 3.0 or later.
7 * Some rights reserved. See LICENSE, AUTHORS.
8 *
9 * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
10 */
11
12exports.open = function (query) {
13 var config = {
14 driver: 'SQL Server Native Client 11.0',
15 userName: query.datasource.user,
16 password: query.datasource.password,
17 server: query.datasource.host,
18
19 options: {
20 database: query.datasource.dbname,
21 encrypt: true,
22 rowCollectionOnRequestCompletion: true
23 /*debug: {
24 packet: true,
25 data: true,
26 payload: true,
27 token: true,
28 log: true
29 }*/
30 }
31 };
32
33 var Connection = require('tedious').Connection;
34 return new Connection(config);
35};
36
37exports.close = function (connection) {
38 //connection.end();
39};
40
41exports.executeQuery = function (query, callback) {
42 if (query.limit)
43 query.sql = query.sql.replace('SELECT', 'SELECT TOP ' + query.limit + ' ');
44
45
46 query.sql = query.sql.replace(/`/gi, '"');
47
48 var connection = this.open(query);
49
50 connection.on('errorMessage', function (err) {
51 throw err;
52 });
53
54 connection.on('connect', function (err) {
55 if (err)
56 throw err;
57
58 var Request = require('tedious').Request;
59 var request = new Request(query.sql, function (err, rowCount, rows) {
60 if (err)
61 throw err;
62
63 connection.close();
64
65 var _fields = [];
66 var _rows = [];
67
68 if (rowCount > 0) {
69 //console.log(rows[0]);
70 _.each(rows[0], function (columns) {
71 var meta = columns.metadata;
72 var field = {};
73 _.each(meta, function (value, key) {
74 field[key] = value;
75 });
76 field.name = field.colName;
77 _fields.push(field);
78 })
79 }
80
81 _.each(rows, function (row) {
82 var _row = {};
83 _.each(row, function (columns) {
84 var value = columns.value;
85 var name = columns.metadata.colName;
86
87 _row[name] = value;
88
89 });
90 _rows.push(_row);
91 });
92
93 var result = {
94 fields: _fields,
95 rows: _rows
96 };
97
98 return callback(err, result);
99 //console.log(result);
100 });
101
102 connection.execSql(request);
103 });
104};
\No newline at end of file