@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
package/dist/esm/query.js CHANGED
@@ -1,260 +1,249 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { createPromiseCallback } from './lib/util';
13
- import { QueryType } from './constant';
14
- import { Db } from './index';
15
- import { Validate } from './validate';
16
- import { Util } from './util';
17
- import { QuerySerializer } from './serializer/query';
18
- import { UpdateSerializer } from './serializer/update';
19
- import { RealtimeWebSocketClient } from './realtime/websocket-client';
20
- import { ErrorCode } from './constant';
21
- var Query = (function () {
22
- function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
23
- var _this = this;
24
- this.watch = function (options) {
25
- if (!Db.ws) {
26
- Db.ws = new RealtimeWebSocketClient({
27
- context: {
28
- appConfig: {
29
- docSizeLimit: 1000,
30
- realtimePingInterval: 10000,
31
- realtimePongWaitTimeout: 5000,
32
- request: _this._request
33
- }
34
- }
35
- });
36
- }
37
- return 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
38
- ? _this._fieldOrders.reduce(function (acc, cur) {
39
- acc[cur.field] = cur.direction;
40
- return acc;
41
- }, {})
42
- : undefined }));
43
- };
44
- this._db = db;
45
- this._coll = coll;
46
- this._fieldFilters = fieldFilters;
47
- this._fieldOrders = fieldOrders || [];
48
- this._queryOptions = queryOptions || {};
49
- this._request = new Db.reqClass(this._db.config);
50
- }
51
- Query.prototype.get = function (callback) {
52
- callback = callback || createPromiseCallback();
53
- var newOder = [];
54
- if (this._fieldOrders) {
55
- this._fieldOrders.forEach(function (order) {
56
- newOder.push(order);
57
- });
58
- }
59
- var param = {
60
- collectionName: this._coll,
61
- queryType: QueryType.WHERE
62
- };
63
- if (this._fieldFilters) {
64
- param.query = this._fieldFilters;
65
- }
66
- if (newOder.length > 0) {
67
- param.order = newOder;
68
- }
69
- if (this._queryOptions.offset) {
70
- param.offset = this._queryOptions.offset;
71
- }
72
- if (this._queryOptions.limit) {
73
- param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
74
- }
75
- else {
76
- param.limit = 100;
77
- }
78
- if (this._queryOptions.projection) {
79
- param.projection = this._queryOptions.projection;
80
- }
81
- this._request
82
- .send('database.queryDocument', param)
83
- .then(function (res) {
84
- if (res.code) {
85
- callback(0, res);
86
- }
87
- else {
88
- var documents = Util.formatResDocumentData(res.data.list);
89
- var result = {
90
- data: documents,
91
- requestId: res.requestId
92
- };
93
- if (res.TotalCount)
94
- result.total = res.TotalCount;
95
- if (res.Limit)
96
- result.limit = res.Limit;
97
- if (res.Offset)
98
- result.offset = res.Offset;
99
- callback(0, result);
100
- }
101
- })
102
- .catch(function (err) {
103
- callback(err);
104
- });
105
- return callback.promise;
106
- };
107
- Query.prototype.count = function (callback) {
108
- callback = callback || createPromiseCallback();
109
- var param = {
110
- collectionName: this._coll,
111
- queryType: QueryType.WHERE
112
- };
113
- if (this._fieldFilters) {
114
- param.query = this._fieldFilters;
115
- }
116
- this._request
117
- .send('database.countDocument', param)
118
- .then(function (res) {
119
- if (res.code) {
120
- callback(0, res);
121
- }
122
- else {
123
- callback(0, {
124
- requestId: res.requestId,
125
- total: res.data.total
126
- });
127
- }
128
- })
129
- .catch(function (e) {
130
- callback(e);
131
- });
132
- return callback.promise;
133
- };
134
- Query.prototype.where = function (query) {
135
- if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
136
- throw Error(ErrorCode.QueryParamTypeError);
137
- }
138
- var keys = Object.keys(query);
139
- var checkFlag = keys.some(function (item) {
140
- return query[item] !== undefined;
141
- });
142
- if (keys.length && !checkFlag) {
143
- throw Error(ErrorCode.QueryParamValueError);
144
- }
145
- return new Query(this._db, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
146
- };
147
- Query.prototype.orderBy = function (fieldPath, directionStr) {
148
- Validate.isFieldPath(fieldPath);
149
- Validate.isFieldOrder(directionStr);
150
- var newOrder = {
151
- field: fieldPath,
152
- direction: directionStr
153
- };
154
- var combinedOrders = this._fieldOrders.concat(newOrder);
155
- return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
156
- };
157
- Query.prototype.limit = function (limit) {
158
- Validate.isInteger('limit', limit);
159
- var option = __assign({}, this._queryOptions);
160
- option.limit = limit;
161
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
162
- };
163
- Query.prototype.skip = function (offset) {
164
- Validate.isInteger('offset', offset);
165
- var option = __assign({}, this._queryOptions);
166
- option.offset = offset;
167
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
168
- };
169
- Query.prototype.update = function (data, callback) {
170
- callback = callback || createPromiseCallback();
171
- if (!data || typeof data !== 'object') {
172
- return Promise.resolve({
173
- code: 'INVALID_PARAM',
174
- message: '参数必需是非空对象'
175
- });
176
- }
177
- if (data.hasOwnProperty('_id')) {
178
- return Promise.resolve({
179
- code: 'INVALID_PARAM',
180
- message: '不能更新_id的值'
181
- });
182
- }
183
- var param = {
184
- collectionName: this._coll,
185
- query: this._fieldFilters,
186
- queryType: QueryType.WHERE,
187
- multi: true,
188
- merge: true,
189
- upsert: false,
190
- data: UpdateSerializer.encode(data)
191
- };
192
- this._request
193
- .send('database.updateDocument', param)
194
- .then(function (res) {
195
- if (res.code) {
196
- callback(0, res);
197
- }
198
- else {
199
- callback(0, {
200
- requestId: res.requestId,
201
- updated: res.data.updated,
202
- upsertId: res.data.upsert_id
203
- });
204
- }
205
- })
206
- .catch(function (e) {
207
- callback(e);
208
- });
209
- return callback.promise;
210
- };
211
- Query.prototype.field = function (projection) {
212
- for (var k in projection) {
213
- if (projection[k]) {
214
- if (typeof projection[k] !== 'object') {
215
- projection[k] = 1;
216
- }
217
- }
218
- else {
219
- projection[k] = 0;
220
- }
221
- }
222
- var option = __assign({}, this._queryOptions);
223
- option.projection = projection;
224
- return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
225
- };
226
- Query.prototype.remove = function (callback) {
227
- callback = callback || createPromiseCallback();
228
- if (Object.keys(this._queryOptions).length > 0) {
229
- console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
230
- }
231
- if (this._fieldOrders.length > 0) {
232
- console.warn('`orderBy` is not supported in remove() operation');
233
- }
234
- var param = {
235
- collectionName: this._coll,
236
- query: QuerySerializer.encode(this._fieldFilters),
237
- queryType: QueryType.WHERE,
238
- multi: true
239
- };
240
- this._request
241
- .send('database.deleteDocument', param)
242
- .then(function (res) {
243
- if (res.code) {
244
- callback(0, res);
245
- }
246
- else {
247
- callback(0, {
248
- requestId: res.requestId,
249
- deleted: res.data.deleted
250
- });
251
- }
252
- })
253
- .catch(function (e) {
254
- callback(e);
255
- });
256
- return callback.promise;
257
- };
258
- return Query;
259
- }());
260
- export { Query };
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { createPromiseCallback } from './lib/util';
13
+ import { QueryType } from './constant';
14
+ import { Db } from './index';
15
+ import { Validate } from './validate';
16
+ import { Util } from './util';
17
+ import { QuerySerializer } from './serializer/query';
18
+ import { UpdateSerializer } from './serializer/update';
19
+ import { ErrorCode } from './constant';
20
+ import { getWsInstance } from './utils/utils';
21
+ var Query = (function () {
22
+ function Query(db, coll, fieldFilters, fieldOrders, queryOptions) {
23
+ var _this = this;
24
+ this.watch = function (options) {
25
+ var ws = getWsInstance(_this._db);
26
+ 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
27
+ ? _this._fieldOrders.reduce(function (acc, cur) {
28
+ acc[cur.field] = cur.direction;
29
+ return acc;
30
+ }, {})
31
+ : undefined }));
32
+ };
33
+ this._db = db;
34
+ this._coll = coll;
35
+ this._fieldFilters = fieldFilters;
36
+ this._fieldOrders = fieldOrders || [];
37
+ this._queryOptions = queryOptions || {};
38
+ this._request = new Db.reqClass(this._db.config);
39
+ }
40
+ Query.prototype.get = function (callback) {
41
+ callback = callback || createPromiseCallback();
42
+ var newOder = [];
43
+ if (this._fieldOrders) {
44
+ this._fieldOrders.forEach(function (order) {
45
+ newOder.push(order);
46
+ });
47
+ }
48
+ var param = {
49
+ collectionName: this._coll,
50
+ queryType: QueryType.WHERE
51
+ };
52
+ if (this._fieldFilters) {
53
+ param.query = this._fieldFilters;
54
+ }
55
+ if (newOder.length > 0) {
56
+ param.order = newOder;
57
+ }
58
+ if (this._queryOptions.offset) {
59
+ param.offset = this._queryOptions.offset;
60
+ }
61
+ if (this._queryOptions.limit) {
62
+ param.limit = this._queryOptions.limit < 1000 ? this._queryOptions.limit : 1000;
63
+ }
64
+ else {
65
+ param.limit = 100;
66
+ }
67
+ if (this._queryOptions.projection) {
68
+ param.projection = this._queryOptions.projection;
69
+ }
70
+ this._request
71
+ .send('database.queryDocument', param)
72
+ .then(function (res) {
73
+ if (res.code) {
74
+ callback(0, res);
75
+ }
76
+ else {
77
+ var documents = Util.formatResDocumentData(res.data.list);
78
+ var result = {
79
+ data: documents,
80
+ requestId: res.requestId
81
+ };
82
+ if (res.TotalCount)
83
+ result.total = res.TotalCount;
84
+ if (res.Limit)
85
+ result.limit = res.Limit;
86
+ if (res.Offset)
87
+ result.offset = res.Offset;
88
+ callback(0, result);
89
+ }
90
+ })
91
+ .catch(function (err) {
92
+ callback(err);
93
+ });
94
+ return callback.promise;
95
+ };
96
+ Query.prototype.count = function (callback) {
97
+ callback = callback || createPromiseCallback();
98
+ var param = {
99
+ collectionName: this._coll,
100
+ queryType: QueryType.WHERE
101
+ };
102
+ if (this._fieldFilters) {
103
+ param.query = this._fieldFilters;
104
+ }
105
+ this._request
106
+ .send('database.countDocument', param)
107
+ .then(function (res) {
108
+ if (res.code) {
109
+ callback(0, res);
110
+ }
111
+ else {
112
+ callback(0, {
113
+ requestId: res.requestId,
114
+ total: res.data.total
115
+ });
116
+ }
117
+ })
118
+ .catch(function (e) {
119
+ callback(e);
120
+ });
121
+ return callback.promise;
122
+ };
123
+ Query.prototype.where = function (query) {
124
+ if (Object.prototype.toString.call(query).slice(8, -1) !== 'Object') {
125
+ throw Error(ErrorCode.QueryParamTypeError);
126
+ }
127
+ var keys = Object.keys(query);
128
+ var checkFlag = keys.some(function (item) {
129
+ return query[item] !== undefined;
130
+ });
131
+ if (keys.length && !checkFlag) {
132
+ throw Error(ErrorCode.QueryParamValueError);
133
+ }
134
+ return new Query(this._db, this._coll, QuerySerializer.encode(query), this._fieldOrders, this._queryOptions);
135
+ };
136
+ Query.prototype.orderBy = function (fieldPath, directionStr) {
137
+ Validate.isFieldPath(fieldPath);
138
+ Validate.isFieldOrder(directionStr);
139
+ var newOrder = {
140
+ field: fieldPath,
141
+ direction: directionStr
142
+ };
143
+ var combinedOrders = this._fieldOrders.concat(newOrder);
144
+ return new Query(this._db, this._coll, this._fieldFilters, combinedOrders, this._queryOptions);
145
+ };
146
+ Query.prototype.limit = function (limit) {
147
+ Validate.isInteger('limit', limit);
148
+ var option = __assign({}, this._queryOptions);
149
+ option.limit = limit;
150
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
151
+ };
152
+ Query.prototype.skip = function (offset) {
153
+ Validate.isInteger('offset', offset);
154
+ var option = __assign({}, this._queryOptions);
155
+ option.offset = offset;
156
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
157
+ };
158
+ Query.prototype.update = function (data, callback) {
159
+ callback = callback || createPromiseCallback();
160
+ if (!data || typeof data !== 'object') {
161
+ return Promise.resolve({
162
+ code: 'INVALID_PARAM',
163
+ message: '参数必需是非空对象'
164
+ });
165
+ }
166
+ if (data.hasOwnProperty('_id')) {
167
+ return Promise.resolve({
168
+ code: 'INVALID_PARAM',
169
+ message: '不能更新_id的值'
170
+ });
171
+ }
172
+ var param = {
173
+ collectionName: this._coll,
174
+ query: this._fieldFilters,
175
+ queryType: QueryType.WHERE,
176
+ multi: true,
177
+ merge: true,
178
+ upsert: false,
179
+ data: UpdateSerializer.encode(data)
180
+ };
181
+ this._request
182
+ .send('database.updateDocument', param)
183
+ .then(function (res) {
184
+ if (res.code) {
185
+ callback(0, res);
186
+ }
187
+ else {
188
+ callback(0, {
189
+ requestId: res.requestId,
190
+ updated: res.data.updated,
191
+ upsertId: res.data.upsert_id
192
+ });
193
+ }
194
+ })
195
+ .catch(function (e) {
196
+ callback(e);
197
+ });
198
+ return callback.promise;
199
+ };
200
+ Query.prototype.field = function (projection) {
201
+ for (var k in projection) {
202
+ if (projection[k]) {
203
+ if (typeof projection[k] !== 'object') {
204
+ projection[k] = 1;
205
+ }
206
+ }
207
+ else {
208
+ projection[k] = 0;
209
+ }
210
+ }
211
+ var option = __assign({}, this._queryOptions);
212
+ option.projection = projection;
213
+ return new Query(this._db, this._coll, this._fieldFilters, this._fieldOrders, option);
214
+ };
215
+ Query.prototype.remove = function (callback) {
216
+ callback = callback || createPromiseCallback();
217
+ if (Object.keys(this._queryOptions).length > 0) {
218
+ console.warn('`offset`, `limit` and `projection` are not supported in remove() operation');
219
+ }
220
+ if (this._fieldOrders.length > 0) {
221
+ console.warn('`orderBy` is not supported in remove() operation');
222
+ }
223
+ var param = {
224
+ collectionName: this._coll,
225
+ query: QuerySerializer.encode(this._fieldFilters),
226
+ queryType: QueryType.WHERE,
227
+ multi: true
228
+ };
229
+ this._request
230
+ .send('database.deleteDocument', param)
231
+ .then(function (res) {
232
+ if (res.code) {
233
+ callback(0, res);
234
+ }
235
+ else {
236
+ callback(0, {
237
+ requestId: res.requestId,
238
+ deleted: res.data.deleted
239
+ });
240
+ }
241
+ })
242
+ .catch(function (e) {
243
+ callback(e);
244
+ });
245
+ return callback.promise;
246
+ };
247
+ return Query;
248
+ }());
249
+ export { 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,25 +1,8 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- extendStatics(d, b);
10
- function __() { this.constructor = d; }
11
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
- };
13
- })();
14
- var RealtimeErrorMessageError = (function (_super) {
15
- __extends(RealtimeErrorMessageError, _super);
16
- function RealtimeErrorMessageError(serverErrorMsg) {
17
- var _this = _super.call(this, "Watch Error " + JSON.stringify(serverErrorMsg.msgData) + " (requestid: " + serverErrorMsg.requestId + ")") || this;
18
- _this.isRealtimeErrorMessageError = true;
19
- _this.payload = serverErrorMsg;
20
- return _this;
21
- }
22
- return RealtimeErrorMessageError;
23
- }(Error));
24
- export { RealtimeErrorMessageError };
25
- export var isRealtimeErrorMessageError = function (e) { return e && e.isRealtimeErrorMessageError; };
1
+ export class RealtimeErrorMessageError extends Error {
2
+ constructor(serverErrorMsg) {
3
+ super(`Watch Error ${JSON.stringify(serverErrorMsg.msgData)} (requestid: ${serverErrorMsg.requestId})`);
4
+ this.isRealtimeErrorMessageError = true;
5
+ this.payload = serverErrorMsg;
6
+ }
7
+ }
8
+ export const 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,16 +1,14 @@
1
- var RealtimeListener = (function () {
2
- function RealtimeListener(options) {
3
- this.close = options.close;
4
- this.onChange = options.onChange;
5
- this.onError = options.onError;
6
- if (options.debug) {
7
- Object.defineProperty(this, 'virtualClient', {
8
- get: function () {
9
- return options.virtualClient;
10
- }
11
- });
12
- }
13
- }
14
- return RealtimeListener;
15
- }());
16
- export { RealtimeListener };
1
+ export class RealtimeListener {
2
+ constructor(options) {
3
+ this.close = options.close;
4
+ this.onChange = options.onChange;
5
+ this.onError = options.onError;
6
+ if (options.debug) {
7
+ Object.defineProperty(this, 'virtualClient', {
8
+ get: () => {
9
+ return options.virtualClient;
10
+ }
11
+ });
12
+ }
13
+ }
14
+ }
@@ -1,3 +1,3 @@
1
- import { IResponseMessage, IResponseMessageInitEventMsg } from '../typings/realtime';
2
- export declare function genRequestId(prefix?: string): string;
3
- export declare function isInitEventMessage(msg: IResponseMessage): msg is IResponseMessageInitEventMsg;
1
+ import { IResponseMessage, IResponseMessageInitEventMsg } from '../typings/realtime';
2
+ export declare function genRequestId(prefix?: string): string;
3
+ export declare function isInitEventMessage(msg: IResponseMessage): msg is IResponseMessageInitEventMsg;