-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathResultSetUtil.js
74 lines (70 loc) · 2.31 KB
/
ResultSetUtil.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* ResultSetUtil
* A utility for working with result sets from a database.
*
* Courtesy of @agermano, certified genius that sometimes forgets why he wrote stuff. From Mirth Slack
*/
/*
_____ _ _
|_ _| |__ __ _ _ __ | | _____
| | | '_ \ / _` | '_ \| |/ / __|
| | | | | | (_| | | | | <\__ \
|_| |_| |_|\__,_|_| |_|_|\_\___/
_____
|_ _|__ _ __ _ _
| |/ _ \| '_ \| | | |
| | (_) | | | | |_| |
|_|\___/|_| |_|\__, |
|___/
*/
var ResultSetUtil = {
/**
* getRowLabels
* Retrieves the column labels from a result set's metadata.
*
* @param {ResultSet} resultSet - The result set to extract labels from.
* @returns {string[]} An array of column labels.
*/
getRowLabels: function getRowLabels(resultSet) {
var labels = [];
var meta = resultSet.metaData;
for (var i = 0; i < meta.columnCount; i++) {
labels.push(meta.getColumnLabel(i + 1));
}
return labels;
},
/**
* getRowAsJs
* Converts a row from a result set into a JavaScript object.
*
* @param {ResultSet} resultSet - The result set containing the row data.
* @param {string[]} labels - An array of column labels.
* @returns {Object} A JavaScript object representing the row data.
*/
getRowAsJs: function getRowAsJs(resultSet, labels) {
return labels.reduce(function (obj, label, i) {
if (resultSet.getObject(i + 1) != null) {
obj[label] = resultSet.getObject(i + 1).toString();
} else {
obj[label] = null;
}
return obj;
}, {});
},
/**
* getRowAsXml
* Converts a row from a result set into an XML element.
*
* @param {ResultSet} resultSet - The result set containing the row data.
* @param {string[]} labels - An array of column labels.
* @returns {XML} An XML element representing the row data.
*/
getRowAsXml: function getRowAsXml(resultSet, labels) {
return labels.reduce(function (obj, label, i) {
obj.appendChild(<{ label }>{resultSet.getObject(i + 1)}</{ label }>);
return obj;
}, <row />);
}
}
// Export the ResultSetUtil for usage in other modules if needed.
module.exports = ResultSetUtil;