@cloudbase/database 0.9.17-beta → 0.9.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +32 -10
  2. package/dist/commonjs/ObjectId/index.d.ts +11 -0
  3. package/dist/commonjs/ObjectId/index.js +21 -0
  4. package/dist/commonjs/aggregate.d.ts +29 -29
  5. package/dist/commonjs/aggregate.js +156 -146
  6. package/dist/commonjs/collection.d.ts +9 -9
  7. package/dist/commonjs/collection.js +46 -46
  8. package/dist/commonjs/command.d.ts +175 -175
  9. package/dist/commonjs/command.js +298 -298
  10. package/dist/commonjs/commands/logic.d.ts +24 -24
  11. package/dist/commonjs/commands/logic.js +88 -88
  12. package/dist/commonjs/commands/query.d.ts +68 -68
  13. package/dist/commonjs/commands/query.js +157 -157
  14. package/dist/commonjs/commands/update.d.ts +29 -29
  15. package/dist/commonjs/commands/update.js +50 -50
  16. package/dist/commonjs/config/app.config.d.ts +6 -6
  17. package/dist/commonjs/config/app.config.js +7 -7
  18. package/dist/commonjs/config/error.config.d.ts +3 -3
  19. package/dist/commonjs/config/error.config.js +15 -15
  20. package/dist/commonjs/const/code.d.ts +30 -30
  21. package/dist/commonjs/const/code.js +32 -32
  22. package/dist/commonjs/constant.d.ts +51 -51
  23. package/dist/commonjs/constant.js +74 -74
  24. package/dist/commonjs/document.d.ts +11 -11
  25. package/dist/commonjs/document.js +252 -263
  26. package/dist/commonjs/geo/index.d.ts +6 -6
  27. package/dist/commonjs/geo/index.js +11 -11
  28. package/dist/commonjs/geo/interface.d.ts +24 -24
  29. package/dist/commonjs/geo/interface.js +2 -2
  30. package/dist/commonjs/geo/lineString.d.ts +19 -19
  31. package/dist/commonjs/geo/lineString.js +85 -85
  32. package/dist/commonjs/geo/multiLineString.d.ts +18 -18
  33. package/dist/commonjs/geo/multiLineString.js +94 -94
  34. package/dist/commonjs/geo/multiPoint.d.ts +18 -18
  35. package/dist/commonjs/geo/multiPoint.js +78 -78
  36. package/dist/commonjs/geo/multiPolygon.d.ts +18 -18
  37. package/dist/commonjs/geo/multiPolygon.js +121 -121
  38. package/dist/commonjs/geo/point.d.ts +19 -19
  39. package/dist/commonjs/geo/point.js +49 -49
  40. package/dist/commonjs/geo/polygon.d.ts +19 -19
  41. package/dist/commonjs/geo/polygon.js +108 -108
  42. package/dist/commonjs/helper/symbol.d.ts +14 -14
  43. package/dist/commonjs/helper/symbol.js +19 -19
  44. package/dist/commonjs/index.d.ts +33 -32
  45. package/dist/commonjs/index.js +46 -46
  46. package/dist/commonjs/lib/util.d.ts +1 -1
  47. package/dist/commonjs/lib/util.js +25 -25
  48. package/dist/commonjs/operator-map.d.ts +4 -4
  49. package/dist/commonjs/operator-map.js +23 -23
  50. package/dist/commonjs/query.d.ts +22 -22
  51. package/dist/commonjs/query.js +251 -262
  52. package/dist/commonjs/realtime/error.d.ts +7 -7
  53. package/dist/commonjs/realtime/error.js +11 -27
  54. package/dist/commonjs/realtime/listener.d.ts +14 -14
  55. package/dist/commonjs/realtime/listener.js +17 -18
  56. package/dist/commonjs/realtime/message.d.ts +3 -3
  57. package/dist/commonjs/realtime/message.js +10 -11
  58. package/dist/commonjs/realtime/snapshot.d.ts +16 -16
  59. package/dist/commonjs/realtime/snapshot.js +42 -43
  60. package/dist/commonjs/realtime/virtual-websocket-client.d.ts +63 -63
  61. package/dist/commonjs/realtime/virtual-websocket-client.js +736 -990
  62. package/dist/commonjs/realtime/websocket-client.d.ts +78 -78
  63. package/dist/commonjs/realtime/websocket-client.js +567 -788
  64. package/dist/commonjs/realtime/ws-event.d.ts +126 -126
  65. package/dist/commonjs/realtime/ws-event.js +139 -139
  66. package/dist/commonjs/regexp/index.d.ts +14 -14
  67. package/dist/commonjs/regexp/index.js +32 -32
  68. package/dist/commonjs/serializer/common.d.ts +11 -11
  69. package/dist/commonjs/serializer/common.js +121 -121
  70. package/dist/commonjs/serializer/datatype.d.ts +7 -7
  71. package/dist/commonjs/serializer/datatype.js +126 -126
  72. package/dist/commonjs/serializer/query.d.ts +7 -7
  73. package/dist/commonjs/serializer/query.js +231 -231
  74. package/dist/commonjs/serializer/update.d.ts +15 -15
  75. package/dist/commonjs/serializer/update.js +141 -141
  76. package/dist/commonjs/serverDate/index.d.ts +13 -13
  77. package/dist/commonjs/serverDate/index.js +29 -29
  78. package/dist/commonjs/transaction/collection.d.ts +7 -7
  79. package/dist/commonjs/transaction/collection.js +46 -46
  80. package/dist/commonjs/transaction/document.d.ts +27 -27
  81. package/dist/commonjs/transaction/document.js +205 -205
  82. package/dist/commonjs/transaction/index.d.ts +30 -30
  83. package/dist/commonjs/transaction/index.js +214 -214
  84. package/dist/commonjs/transaction/query.d.ts +5 -5
  85. package/dist/commonjs/transaction/query.js +10 -10
  86. package/dist/commonjs/transaction.d.ts +42 -42
  87. package/dist/commonjs/transaction.js +126 -126
  88. package/dist/commonjs/typings/index.d.ts +40 -40
  89. package/dist/commonjs/typings/index.js +2 -2
  90. package/dist/commonjs/typings/realtime.d.ts +219 -219
  91. package/dist/commonjs/typings/realtime.js +2 -2
  92. package/dist/commonjs/util.d.ts +9 -9
  93. package/dist/commonjs/util.js +144 -144
  94. package/dist/commonjs/utils/error.d.ts +37 -37
  95. package/dist/commonjs/utils/error.js +85 -85
  96. package/dist/commonjs/utils/symbol.d.ts +8 -8
  97. package/dist/commonjs/utils/symbol.js +57 -57
  98. package/dist/commonjs/utils/type.d.ts +13 -13
  99. package/dist/commonjs/utils/type.js +22 -22
  100. package/dist/commonjs/utils/utils.d.ts +4 -2
  101. package/dist/commonjs/utils/utils.js +36 -14
  102. package/dist/commonjs/validate.d.ts +1 -1
  103. package/dist/commonjs/validate.js +59 -59
  104. package/dist/esm/ObjectId/index.d.ts +11 -0
  105. package/dist/esm/ObjectId/index.js +17 -0
  106. package/dist/esm/aggregate.d.ts +29 -29
  107. package/dist/esm/aggregate.js +154 -144
  108. package/dist/esm/collection.d.ts +9 -9
  109. package/dist/esm/collection.js +44 -44
  110. package/dist/esm/command.d.ts +175 -175
  111. package/dist/esm/command.js +296 -296
  112. package/dist/esm/commands/logic.d.ts +24 -24
  113. package/dist/esm/commands/logic.js +84 -84
  114. package/dist/esm/commands/query.d.ts +68 -68
  115. package/dist/esm/commands/query.js +152 -152
  116. package/dist/esm/commands/update.d.ts +29 -29
  117. package/dist/esm/commands/update.js +46 -46
  118. package/dist/esm/config/app.config.d.ts +6 -6
  119. package/dist/esm/config/app.config.js +5 -5
  120. package/dist/esm/config/error.config.d.ts +3 -3
  121. package/dist/esm/config/error.config.js +13 -13
  122. package/dist/esm/const/code.d.ts +30 -30
  123. package/dist/esm/const/code.js +30 -30
  124. package/dist/esm/constant.d.ts +51 -51
  125. package/dist/esm/constant.js +65 -65
  126. package/dist/esm/document.d.ts +11 -11
  127. package/dist/esm/document.js +250 -261
  128. package/dist/esm/geo/index.d.ts +6 -6
  129. package/dist/esm/geo/index.js +6 -6
  130. package/dist/esm/geo/interface.d.ts +24 -24
  131. package/dist/esm/geo/lineString.d.ts +19 -19
  132. package/dist/esm/geo/lineString.js +83 -83
  133. package/dist/esm/geo/multiLineString.d.ts +18 -18
  134. package/dist/esm/geo/multiLineString.js +92 -92
  135. package/dist/esm/geo/multiPoint.d.ts +18 -18
  136. package/dist/esm/geo/multiPoint.js +76 -76
  137. package/dist/esm/geo/multiPolygon.d.ts +18 -18
  138. package/dist/esm/geo/multiPolygon.js +119 -119
  139. package/dist/esm/geo/point.d.ts +19 -19
  140. package/dist/esm/geo/point.js +47 -47
  141. package/dist/esm/geo/polygon.d.ts +19 -19
  142. package/dist/esm/geo/polygon.js +106 -106
  143. package/dist/esm/helper/symbol.d.ts +14 -14
  144. package/dist/esm/helper/symbol.js +14 -14
  145. package/dist/esm/index.d.ts +33 -32
  146. package/dist/esm/index.js +41 -41
  147. package/dist/esm/lib/util.d.ts +1 -1
  148. package/dist/esm/lib/util.js +23 -23
  149. package/dist/esm/operator-map.d.ts +4 -4
  150. package/dist/esm/operator-map.js +20 -20
  151. package/dist/esm/query.d.ts +22 -22
  152. package/dist/esm/query.js +249 -260
  153. package/dist/esm/realtime/error.d.ts +7 -7
  154. package/dist/esm/realtime/error.js +8 -25
  155. package/dist/esm/realtime/listener.d.ts +14 -14
  156. package/dist/esm/realtime/listener.js +14 -16
  157. package/dist/esm/realtime/message.d.ts +3 -3
  158. package/dist/esm/realtime/message.js +6 -7
  159. package/dist/esm/realtime/snapshot.d.ts +16 -16
  160. package/dist/esm/realtime/snapshot.js +39 -41
  161. package/dist/esm/realtime/virtual-websocket-client.d.ts +63 -63
  162. package/dist/esm/realtime/virtual-websocket-client.js +733 -988
  163. package/dist/esm/realtime/websocket-client.d.ts +78 -78
  164. package/dist/esm/realtime/websocket-client.js +564 -786
  165. package/dist/esm/realtime/ws-event.d.ts +126 -126
  166. package/dist/esm/realtime/ws-event.js +137 -137
  167. package/dist/esm/regexp/index.d.ts +14 -14
  168. package/dist/esm/regexp/index.js +29 -29
  169. package/dist/esm/serializer/common.d.ts +11 -11
  170. package/dist/esm/serializer/common.js +113 -113
  171. package/dist/esm/serializer/datatype.d.ts +7 -7
  172. package/dist/esm/serializer/datatype.js +122 -122
  173. package/dist/esm/serializer/query.d.ts +7 -7
  174. package/dist/esm/serializer/query.js +229 -229
  175. package/dist/esm/serializer/update.d.ts +15 -15
  176. package/dist/esm/serializer/update.js +139 -139
  177. package/dist/esm/serverDate/index.d.ts +13 -13
  178. package/dist/esm/serverDate/index.js +26 -26
  179. package/dist/esm/transaction/collection.d.ts +7 -7
  180. package/dist/esm/transaction/collection.js +44 -44
  181. package/dist/esm/transaction/document.d.ts +27 -27
  182. package/dist/esm/transaction/document.js +203 -203
  183. package/dist/esm/transaction/index.d.ts +30 -30
  184. package/dist/esm/transaction/index.js +210 -210
  185. package/dist/esm/transaction/query.d.ts +5 -5
  186. package/dist/esm/transaction/query.js +8 -8
  187. package/dist/esm/transaction.d.ts +42 -42
  188. package/dist/esm/transaction.js +121 -121
  189. package/dist/esm/typings/index.d.ts +40 -40
  190. package/dist/esm/typings/realtime.d.ts +219 -219
  191. package/dist/esm/util.d.ts +9 -9
  192. package/dist/esm/util.js +142 -142
  193. package/dist/esm/utils/error.d.ts +37 -37
  194. package/dist/esm/utils/error.js +82 -82
  195. package/dist/esm/utils/symbol.d.ts +8 -8
  196. package/dist/esm/utils/symbol.js +55 -55
  197. package/dist/esm/utils/type.d.ts +13 -13
  198. package/dist/esm/utils/type.js +20 -20
  199. package/dist/esm/utils/utils.d.ts +4 -2
  200. package/dist/esm/utils/utils.js +33 -12
  201. package/dist/esm/validate.d.ts +1 -1
  202. package/dist/esm/validate.js +57 -57
  203. package/package.json +4 -1
  204. package/src/aggregate.ts +11 -0
  205. package/src/document.ts +3 -15
  206. package/src/index.ts +2 -0
  207. package/src/query.ts +4 -16
  208. package/src/utils/utils.ts +28 -0
  209. package/.DS_Store +0 -0
  210. package/src/.DS_Store +0 -0
  211. package/src/realtime/error.ts +0 -19
  212. package/src/realtime/listener.ts +0 -35
  213. package/src/realtime/message.ts +0 -14
  214. package/src/realtime/snapshot.ts +0 -60
  215. package/src/realtime/virtual-websocket-client.ts +0 -1195
  216. package/src/realtime/websocket-client.ts +0 -995
  217. package/src/realtime/ws-event.ts +0 -163
  218. package/src/regexp/.DS_Store +0 -0
@@ -1,262 +1,251 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- var util_1 = require("./lib/util");
15
- var constant_1 = require("./constant");
16
- var index_1 = require("./index");
17
- var validate_1 = require("./validate");
18
- var util_2 = require("./util");
19
- var query_1 = require("./serializer/query");
20
- var update_1 = require("./serializer/update");
21
- var websocket_client_1 = require("./realtime/websocket-client");
22
- var constant_2 = require("./constant");
23
- var Query = (function () {
24
- function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
25
- var _this = this;
26
- this.watch = function (options) {
27
- if (!index_1.Db.ws) {
28
- index_1.Db.ws = new websocket_client_1.RealtimeWebSocketClient({
29
- context: {
30
- appConfig: {
31
- docSizeLimit: 1000,
32
- realtimePingInterval: 10000,
33
- realtimePongWaitTimeout: 5000,
34
- request: _this._request
35
- }
36
- }
37
- });
38
- }
39
- return index_1.Db.ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters), limit: _this._queryOptions.limit, orderBy: _this._fieldOrders
40
- ? _this._fieldOrders.reduce(function (acc, cur) {
41
- acc[cur.field] = cur.direction;
42
- return acc;
43
- }, {})
44
- : undefined }));
45
- };
46
- this._db = db;
47
- this._coll = coll;
48
- this._fieldFilters = fieldFilters;
49
- this._fieldOrders = fieldOrders || [];
50
- this._queryOptions = queryOptions || {};
51
- this._request = new index_1.Db.reqClass(this._db.config);
52
- }
53
- Query.prototype.get = function (callback) {
54
- callback = callback || util_1.createPromiseCallback();
55
- var newOder = [];
56
- if (this._fieldOrders) {
57
- this._fieldOrders.forEach(function (order) {
58
- newOder.push(order);
59
- });
60
- }
61
- var param = {
62
- collectionName: this._coll,
63
- queryType: constant_1.QueryType.WHERE
64
- };
65
- if (this._fieldFilters) {
66
- param.query = this._fieldFilters;
67
- }
68
- if (newOder.length > 0) {
69
- param.order = newOder;
70
- }
71
- if (this._queryOptions.offset) {
72
- param.offset = this._queryOptions.offset;
73
- }
74
- if (this._queryOptions.limit) {
75
- param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
76
- }
77
- else {
78
- param.limit = 100;
79
- }
80
- if (this._queryOptions.projection) {
81
- param.projection = this._queryOptions.projection;
82
- }
83
- this._request
84
- .send('database.queryDocument', param)
85
- .then(function (res) {
86
- if (res.code) {
87
- callback(0, res);
88
- }
89
- else {
90
- var documents = util_2.Util.formatResDocumentData(res.data.list);
91
- var result = {
92
- data: documents,
93
- requestId: res.requestId
94
- };
95
- if (res.TotalCount)
96
- result.total = res.TotalCount;
97
- if (res.Limit)
98
- result.limit = res.Limit;
99
- if (res.Offset)
100
- result.offset = res.Offset;
101
- callback(0, result);
102
- }
103
- })
104
- .catch(function (err) {
105
- callback(err);
106
- });
107
- return callback.promise;
108
- };
109
- Query.prototype.count = function (callback) {
110
- callback = callback || util_1.createPromiseCallback();
111
- var param = {
112
- collectionName: this._coll,
113
- queryType: constant_1.QueryType.WHERE
114
- };
115
- if (this._fieldFilters) {
116
- param.query = this._fieldFilters;
117
- }
118
- this._request
119
- .send('database.countDocument', param)
120
- .then(function (res) {
121
- if (res.code) {
122
- callback(0, res);
123
- }
124
- else {
125
- callback(0, {
126
- requestId: res.requestId,
127
- total: res.data.total
128
- });
129
- }
130
- })
131
- .catch(function (e) {
132
- callback(e);
133
- });
134
- return callback.promise;
135
- };
136
- Query.prototype.where = function (query) {
137
- if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
138
- throw Error(constant_2.ErrorCode.QueryParamTypeError);
139
- }
140
- var keys = Object.keys(query);
141
- var checkFlag = keys.some(function (item) {
142
- return query[item] !== undefined;
143
- });
144
- if (keys.length && !checkFlag) {
145
- throw Error(constant_2.ErrorCode.QueryParamValueError);
146
- }
147
- return new Query(this._db, this._coll, query_1.QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
148
- };
149
- Query.prototype.orderBy = function (fieldPath, directionStr) {
150
- validate_1.Validate.isFieldPath(fieldPath);
151
- validate_1.Validate.isFieldOrder(directionStr);
152
- var newOrder = {
153
- field: fieldPath,
154
- direction: directionStr
155
- };
156
- var combinedOrders = this._fieldOrders.concat(newOrder);
157
- return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
158
- };
159
- Query.prototype.limit = function (limit) {
160
- validate_1.Validate.isInteger('limit', limit);
161
- var option = __assign({}, this._queryOptions);
162
- option.limit = limit;
163
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
164
- };
165
- Query.prototype.skip = function (offset) {
166
- validate_1.Validate.isInteger('offset', offset);
167
- var option = __assign({}, this._queryOptions);
168
- option.offset = offset;
169
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
170
- };
171
- Query.prototype.update = function (data, callback) {
172
- callback = callback || util_1.createPromiseCallback();
173
- if (!data || typeof data !== 'object') {
174
- return Promise.resolve({
175
- code: 'INVALID_PARAM',
176
- message: '参数必需是非空对象'
177
- });
178
- }
179
- if (data.hasOwnProperty('_id')) {
180
- return Promise.resolve({
181
- code: 'INVALID_PARAM',
182
- message: '不能更新_id的值'
183
- });
184
- }
185
- var param = {
186
- collectionName: this._coll,
187
- query: this._fieldFilters,
188
- queryType: constant_1.QueryType.WHERE,
189
- multi: true,
190
- merge: true,
191
- upsert: false,
192
- data: update_1.UpdateSerializer.encode(data)
193
- };
194
- this._request
195
- .send('database.updateDocument', param)
196
- .then(function (res) {
197
- if (res.code) {
198
- callback(0, res);
199
- }
200
- else {
201
- callback(0, {
202
- requestId: res.requestId,
203
- updated: res.data.updated,
204
- upsertId: res.data.upsert_id
205
- });
206
- }
207
- })
208
- .catch(function (e) {
209
- callback(e);
210
- });
211
- return callback.promise;
212
- };
213
- Query.prototype.field = function (projection) {
214
- for (var k in projection) {
215
- if (projection[k]) {
216
- if (typeof projection[k] !== 'object') {
217
- projection[k] = 1;
218
- }
219
- }
220
- else {
221
- projection[k] = 0;
222
- }
223
- }
224
- var option = __assign({}, this._queryOptions);
225
- option.projection = projection;
226
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
227
- };
228
- Query.prototype.remove = function (callback) {
229
- callback = callback || util_1.createPromiseCallback();
230
- if (Object.keys(this._queryOptions).length > 0) {
231
- console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
232
- }
233
- if (this._fieldOrders.length > 0) {
234
- console.warn('`orderBy` is not supported in remove() operation');
235
- }
236
- var param = {
237
- collectionName: this._coll,
238
- query: query_1.QuerySerializer.encode(this._fieldFilters),
239
- queryType: constant_1.QueryType.WHERE,
240
- multi: true
241
- };
242
- this._request
243
- .send('database.deleteDocument', param)
244
- .then(function (res) {
245
- if (res.code) {
246
- callback(0, res);
247
- }
248
- else {
249
- callback(0, {
250
- requestId: res.requestId,
251
- deleted: res.data.deleted
252
- });
253
- }
254
- })
255
- .catch(function (e) {
256
- callback(e);
257
- });
258
- return callback.promise;
259
- };
260
- return Query;
261
- }());
262
- exports.Query = Query;
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var util_1 = require("./lib/util");
15
+ var constant_1 = require("./constant");
16
+ var index_1 = require("./index");
17
+ var validate_1 = require("./validate");
18
+ var util_2 = require("./util");
19
+ var query_1 = require("./serializer/query");
20
+ var update_1 = require("./serializer/update");
21
+ var constant_2 = require("./constant");
22
+ var utils_1 = require("./utils/utils");
23
+ var Query = (function () {
24
+ function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
25
+ var _this = this;
26
+ this.watch = function (options) {
27
+ var ws = utils_1.getWsInstance(_this._db);
28
+ return ws.watch(__assign(__assign({}, options), { envId: _this._db.config.env, collectionName: _this._coll, query: JSON.stringify(_this._fieldFilters || {}), limit: _this._queryOptions.limit, orderBy: _this._fieldOrders
29
+ ? _this._fieldOrders.reduce(function (acc, cur) {
30
+ acc[cur.field] = cur.direction;
31
+ return acc;
32
+ }, {})
33
+ : undefined }));
34
+ };
35
+ this._db = db;
36
+ this._coll = coll;
37
+ this._fieldFilters = fieldFilters;
38
+ this._fieldOrders = fieldOrders || [];
39
+ this._queryOptions = queryOptions || {};
40
+ this._request = new index_1.Db.reqClass(this._db.config);
41
+ }
42
+ Query.prototype.get = function (callback) {
43
+ callback = callback || util_1.createPromiseCallback();
44
+ var newOder = [];
45
+ if (this._fieldOrders) {
46
+ this._fieldOrders.forEach(function (order) {
47
+ newOder.push(order);
48
+ });
49
+ }
50
+ var param = {
51
+ collectionName: this._coll,
52
+ queryType: constant_1.QueryType.WHERE
53
+ };
54
+ if (this._fieldFilters) {
55
+ param.query = this._fieldFilters;
56
+ }
57
+ if (newOder.length > 0) {
58
+ param.order = newOder;
59
+ }
60
+ if (this._queryOptions.offset) {
61
+ param.offset = this._queryOptions.offset;
62
+ }
63
+ if (this._queryOptions.limit) {
64
+ param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
65
+ }
66
+ else {
67
+ param.limit = 100;
68
+ }
69
+ if (this._queryOptions.projection) {
70
+ param.projection = this._queryOptions.projection;
71
+ }
72
+ this._request
73
+ .send('database.queryDocument', param)
74
+ .then(function (res) {
75
+ if (res.code) {
76
+ callback(0, res);
77
+ }
78
+ else {
79
+ var documents = util_2.Util.formatResDocumentData(res.data.list);
80
+ var result = {
81
+ data: documents,
82
+ requestId: res.requestId
83
+ };
84
+ if (res.TotalCount)
85
+ result.total = res.TotalCount;
86
+ if (res.Limit)
87
+ result.limit = res.Limit;
88
+ if (res.Offset)
89
+ result.offset = res.Offset;
90
+ callback(0, result);
91
+ }
92
+ })
93
+ .catch(function (err) {
94
+ callback(err);
95
+ });
96
+ return callback.promise;
97
+ };
98
+ Query.prototype.count = function (callback) {
99
+ callback = callback || util_1.createPromiseCallback();
100
+ var param = {
101
+ collectionName: this._coll,
102
+ queryType: constant_1.QueryType.WHERE
103
+ };
104
+ if (this._fieldFilters) {
105
+ param.query = this._fieldFilters;
106
+ }
107
+ this._request
108
+ .send('database.countDocument', param)
109
+ .then(function (res) {
110
+ if (res.code) {
111
+ callback(0, res);
112
+ }
113
+ else {
114
+ callback(0, {
115
+ requestId: res.requestId,
116
+ total: res.data.total
117
+ });
118
+ }
119
+ })
120
+ .catch(function (e) {
121
+ callback(e);
122
+ });
123
+ return callback.promise;
124
+ };
125
+ Query.prototype.where = function (query) {
126
+ if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
127
+ throw Error(constant_2.ErrorCode.QueryParamTypeError);
128
+ }
129
+ var keys = Object.keys(query);
130
+ var checkFlag = keys.some(function (item) {
131
+ return query[item] !== undefined;
132
+ });
133
+ if (keys.length && !checkFlag) {
134
+ throw Error(constant_2.ErrorCode.QueryParamValueError);
135
+ }
136
+ return new Query(this._db, this._coll, query_1.QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
137
+ };
138
+ Query.prototype.orderBy = function (fieldPath, directionStr) {
139
+ validate_1.Validate.isFieldPath(fieldPath);
140
+ validate_1.Validate.isFieldOrder(directionStr);
141
+ var newOrder = {
142
+ field: fieldPath,
143
+ direction: directionStr
144
+ };
145
+ var combinedOrders = this._fieldOrders.concat(newOrder);
146
+ return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
147
+ };
148
+ Query.prototype.limit = function (limit) {
149
+ validate_1.Validate.isInteger('limit', limit);
150
+ var option = __assign({}, this._queryOptions);
151
+ option.limit = limit;
152
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
153
+ };
154
+ Query.prototype.skip = function (offset) {
155
+ validate_1.Validate.isInteger('offset', offset);
156
+ var option = __assign({}, this._queryOptions);
157
+ option.offset = offset;
158
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
159
+ };
160
+ Query.prototype.update = function (data, callback) {
161
+ callback = callback || util_1.createPromiseCallback();
162
+ if (!data || typeof data !== 'object') {
163
+ return Promise.resolve({
164
+ code: 'INVALID_PARAM',
165
+ message: '参数必需是非空对象'
166
+ });
167
+ }
168
+ if (data.hasOwnProperty('_id')) {
169
+ return Promise.resolve({
170
+ code: 'INVALID_PARAM',
171
+ message: '不能更新_id的值'
172
+ });
173
+ }
174
+ var param = {
175
+ collectionName: this._coll,
176
+ query: this._fieldFilters,
177
+ queryType: constant_1.QueryType.WHERE,
178
+ multi: true,
179
+ merge: true,
180
+ upsert: false,
181
+ data: update_1.UpdateSerializer.encode(data)
182
+ };
183
+ this._request
184
+ .send('database.updateDocument', param)
185
+ .then(function (res) {
186
+ if (res.code) {
187
+ callback(0, res);
188
+ }
189
+ else {
190
+ callback(0, {
191
+ requestId: res.requestId,
192
+ updated: res.data.updated,
193
+ upsertId: res.data.upsert_id
194
+ });
195
+ }
196
+ })
197
+ .catch(function (e) {
198
+ callback(e);
199
+ });
200
+ return callback.promise;
201
+ };
202
+ Query.prototype.field = function (projection) {
203
+ for (var k in projection) {
204
+ if (projection[k]) {
205
+ if (typeof projection[k] !== 'object') {
206
+ projection[k] = 1;
207
+ }
208
+ }
209
+ else {
210
+ projection[k] = 0;
211
+ }
212
+ }
213
+ var option = __assign({}, this._queryOptions);
214
+ option.projection = projection;
215
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
216
+ };
217
+ Query.prototype.remove = function (callback) {
218
+ callback = callback || util_1.createPromiseCallback();
219
+ if (Object.keys(this._queryOptions).length > 0) {
220
+ console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
221
+ }
222
+ if (this._fieldOrders.length > 0) {
223
+ console.warn('`orderBy` is not supported in remove() operation');
224
+ }
225
+ var param = {
226
+ collectionName: this._coll,
227
+ query: query_1.QuerySerializer.encode(this._fieldFilters),
228
+ queryType: constant_1.QueryType.WHERE,
229
+ multi: true
230
+ };
231
+ this._request
232
+ .send('database.deleteDocument', param)
233
+ .then(function (res) {
234
+ if (res.code) {
235
+ callback(0, res);
236
+ }
237
+ else {
238
+ callback(0, {
239
+ requestId: res.requestId,
240
+ deleted: res.data.deleted
241
+ });
242
+ }
243
+ })
244
+ .catch(function (e) {
245
+ callback(e);
246
+ });
247
+ return callback.promise;
248
+ };
249
+ return Query;
250
+ }());
251
+ exports.Query = Query;
@@ -1,7 +1,7 @@
1
- import { IResponseMessageErrorMsg } from '../typings/realtime';
2
- export declare class RealtimeErrorMessageError extends Error {
3
- isRealtimeErrorMessageError: boolean;
4
- payload: IResponseMessageErrorMsg;
5
- constructor(serverErrorMsg: IResponseMessageErrorMsg);
6
- }
7
- export declare const isRealtimeErrorMessageError: (e: any) => e is RealtimeErrorMessageError;
1
+ import { IResponseMessageErrorMsg } from '../typings/realtime';
2
+ export declare class RealtimeErrorMessageError extends Error {
3
+ isRealtimeErrorMessageError: boolean;
4
+ payload: IResponseMessageErrorMsg;
5
+ constructor(serverErrorMsg: IResponseMessageErrorMsg);
6
+ }
7
+ export declare const isRealtimeErrorMessageError: (e: any) => e is RealtimeErrorMessageError;
@@ -1,27 +1,11 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- var RealtimeErrorMessageError = (function (_super) {
17
- __extends(RealtimeErrorMessageError, _super);
18
- function RealtimeErrorMessageError(serverErrorMsg) {
19
- var _this = _super.call(this, "Watch Error " + JSON.stringify(serverErrorMsg.msgData) + " (requestid: " + serverErrorMsg.requestId + ")") || this;
20
- _this.isRealtimeErrorMessageError = true;
21
- _this.payload = serverErrorMsg;
22
- return _this;
23
- }
24
- return RealtimeErrorMessageError;
25
- }(Error));
26
- exports.RealtimeErrorMessageError = RealtimeErrorMessageError;
27
- exports.isRealtimeErrorMessageError = function (e) { return e && e.isRealtimeErrorMessageError; };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RealtimeErrorMessageError extends Error {
4
+ constructor(serverErrorMsg) {
5
+ super(`Watch Error ${JSON.stringify(serverErrorMsg.msgData)} (requestid: ${serverErrorMsg.requestId})`);
6
+ this.isRealtimeErrorMessageError = true;
7
+ this.payload = serverErrorMsg;
8
+ }
9
+ }
10
+ exports.RealtimeErrorMessageError = RealtimeErrorMessageError;
11
+ exports.isRealtimeErrorMessageError = (e) => e && e.isRealtimeErrorMessageError;
@@ -1,14 +1,14 @@
1
- import { VirtualWebSocketClient } from './virtual-websocket-client';
2
- import { IRealtimeListenerConstructorOptions, DBRealtimeListener } from '../typings/index';
3
- interface IRealtimeListenerOptions extends IRealtimeListenerConstructorOptions {
4
- close: () => void;
5
- debug?: boolean;
6
- virtualClient?: VirtualWebSocketClient;
7
- }
8
- export declare class RealtimeListener implements DBRealtimeListener {
9
- close: () => void;
10
- onChange: (res: any) => void;
11
- onError: (error: any) => void;
12
- constructor(options: IRealtimeListenerOptions);
13
- }
14
- export {};
1
+ import { VirtualWebSocketClient } from './virtual-websocket-client';
2
+ import { IRealtimeListenerConstructorOptions, DBRealtimeListener } from '../typings/index';
3
+ interface IRealtimeListenerOptions extends IRealtimeListenerConstructorOptions {
4
+ close: () => void;
5
+ debug?: boolean;
6
+ virtualClient?: VirtualWebSocketClient;
7
+ }
8
+ export declare class RealtimeListener implements DBRealtimeListener {
9
+ close: () => void;
10
+ onChange: (res: any) => void;
11
+ onError: (error: any) => void;
12
+ constructor(options: IRealtimeListenerOptions);
13
+ }
14
+ export {};
@@ -1,18 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var RealtimeListener = (function () {
4
- function RealtimeListener(options) {
5
- this.close = options.close;
6
- this.onChange = options.onChange;
7
- this.onError = options.onError;
8
- if (options.debug) {
9
- Object.defineProperty(this, 'virtualClient', {
10
- get: function () {
11
- return options.virtualClient;
12
- }
13
- });
14
- }
15
- }
16
- return RealtimeListener;
17
- }());
18
- exports.RealtimeListener = RealtimeListener;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RealtimeListener {
4
+ constructor(options) {
5
+ this.close = options.close;
6
+ this.onChange = options.onChange;
7
+ this.onError = options.onError;
8
+ if (options.debug) {
9
+ Object.defineProperty(this, 'virtualClient', {
10
+ get: () => {
11
+ return options.virtualClient;
12
+ }
13
+ });
14
+ }
15
+ }
16
+ }
17
+ exports.RealtimeListener = RealtimeListener;