1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
8 |
|
9 | var _bluebird = require('bluebird');
|
10 |
|
11 | var _bluebird2 = _interopRequireDefault(_bluebird);
|
12 |
|
13 | var _debug = require('./debug');
|
14 |
|
15 | var _debug2 = _interopRequireDefault(_debug);
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new _bluebird2.default(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return _bluebird2.default.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
|
20 |
|
21 | const makeAsyncApi = client => {
|
22 | function query(sql) {
|
23 | for (var _len = arguments.length, values = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
24 | values[_key - 1] = arguments[_key];
|
25 | }
|
26 |
|
27 | return query.queryArgs(sql, values);
|
28 | }
|
29 |
|
30 | query.query = function (sql) {
|
31 | for (var _len2 = arguments.length, values = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
32 | values[_key2 - 1] = arguments[_key2];
|
33 | }
|
34 |
|
35 | return query.queryArgs(sql, values);
|
36 | };
|
37 | query.queryArgs = (sql, values) => new _bluebird2.default((resolve, reject) => {
|
38 | (0, _debug2.default)('query params: %j query: %j', values, sql);
|
39 | client.query(sql, values, (err, result) => {
|
40 | if (err) {
|
41 | (0, _debug2.default)('%s query(%j, %j)', err, sql, values);
|
42 | return reject(err);
|
43 | }
|
44 | (0, _debug2.default)('query ok: %d rows', result.rowCount);
|
45 | return resolve(result);
|
46 | });
|
47 | });
|
48 |
|
49 | query.rows = function (sql) {
|
50 | for (var _len3 = arguments.length, values = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
51 | values[_key3 - 1] = arguments[_key3];
|
52 | }
|
53 |
|
54 | return query.rowsArgs(sql, values);
|
55 | };
|
56 | query.rowsArgs = (() => {
|
57 | var ref = _asyncToGenerator(function* (sql, values) {
|
58 | return (yield query.queryArgs(sql, values)).rows;
|
59 | }),
|
60 | _this = undefined;
|
61 |
|
62 | return function (_x, _x2) {
|
63 | return ref.apply(_this, arguments);
|
64 | };
|
65 | })();
|
66 |
|
67 | query.row = function (sql) {
|
68 | for (var _len4 = arguments.length, values = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
69 | values[_key4 - 1] = arguments[_key4];
|
70 | }
|
71 |
|
72 | return query.rowArgs(sql, values);
|
73 | };
|
74 | query.rowArgs = (() => {
|
75 | var ref = _asyncToGenerator(function* (sql, values) {
|
76 | const result = yield query.queryArgs(sql, values);
|
77 | if (result.rowCount !== 1) throw new Error(`SQL: Expected exactly one row result but ${ result.rowCount } returned`);
|
78 | return result.rows[0];
|
79 | }),
|
80 | _this = undefined;
|
81 |
|
82 | return function (_x3, _x4) {
|
83 | return ref.apply(_this, arguments);
|
84 | };
|
85 | })();
|
86 |
|
87 | query.value = (() => {
|
88 | var ref = _asyncToGenerator(function* (sql) {
|
89 | for (var _len5 = arguments.length, values = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
90 | values[_key5 - 1] = arguments[_key5];
|
91 | }
|
92 |
|
93 | return query.valueArgs(sql, values);
|
94 | }),
|
95 | _this = undefined;
|
96 |
|
97 | return function (_x5, _x6) {
|
98 | return ref.apply(_this, arguments);
|
99 | };
|
100 | })();
|
101 | query.valueArgs = (() => {
|
102 | var ref = _asyncToGenerator(function* (sql, values) {
|
103 |
|
104 |
|
105 | const opts = typeof sql === 'string' ? { text: sql, rowMode: 'array' } : _extends({}, sql, { rowMode: 'array' });
|
106 | const result = yield query.rowArgs(opts, values);
|
107 | if (result.length !== 1) throw new Error(`SQL: Expected exactly one column but ${ result.length } returned`);
|
108 | return result[0];
|
109 | }),
|
110 | _this = undefined;
|
111 |
|
112 | return function (_x7, _x8) {
|
113 | return ref.apply(_this, arguments);
|
114 | };
|
115 | })();
|
116 |
|
117 | query.inTransaction = false;
|
118 |
|
119 | query.startTransaction = () => {
|
120 | query.inTransaction = true;
|
121 | return query.query('BEGIN');
|
122 | };
|
123 |
|
124 | query.commit = () => {
|
125 | query.inTransaction = false;
|
126 | return query.query('COMMIT');
|
127 | };
|
128 |
|
129 | query.rollback = () => {
|
130 | query.inTransaction = false;
|
131 | return query.query('ROLLBACK');
|
132 | };
|
133 |
|
134 | query.end = _asyncToGenerator(function* () {
|
135 | if (query.inTransaction) {
|
136 | yield query.rollback();
|
137 | throw new Error('Transaction started manually but not closed. Automatic rollback');
|
138 | }
|
139 | });
|
140 |
|
141 | return query;
|
142 | };
|
143 |
|
144 | exports.default = makeAsyncApi;
|
145 | module.exports = exports['default']; |
\ | No newline at end of file |