@cloudbase/database 0.9.20 → 0.9.22
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.
- package/dist/esm/aggregate.d.ts +29 -0
- package/dist/esm/aggregate.js +154 -0
- package/dist/esm/collection.d.ts +9 -0
- package/dist/esm/collection.js +44 -0
- package/dist/esm/command.d.ts +175 -0
- package/dist/esm/command.js +296 -0
- package/dist/esm/commands/logic.d.ts +24 -0
- package/dist/esm/commands/logic.js +84 -0
- package/dist/esm/commands/query.d.ts +68 -0
- package/dist/esm/commands/query.js +152 -0
- package/dist/esm/commands/update.d.ts +29 -0
- package/dist/esm/commands/update.js +46 -0
- package/dist/esm/config/app.config.d.ts +6 -0
- package/dist/esm/config/app.config.js +5 -0
- package/dist/esm/config/error.config.d.ts +3 -0
- package/dist/esm/config/error.config.js +13 -0
- package/dist/esm/const/code.d.ts +30 -0
- package/dist/esm/const/code.js +30 -0
- package/dist/esm/constant.d.ts +51 -0
- package/dist/esm/constant.js +65 -0
- package/dist/esm/document.d.ts +11 -0
- package/dist/esm/document.js +247 -0
- package/dist/esm/geo/index.d.ts +6 -0
- package/dist/esm/geo/index.js +6 -0
- package/dist/esm/geo/interface.d.ts +24 -0
- package/dist/esm/geo/interface.js +0 -0
- package/dist/esm/geo/lineString.d.ts +19 -0
- package/dist/esm/geo/lineString.js +83 -0
- package/dist/esm/geo/multiLineString.d.ts +18 -0
- package/dist/esm/geo/multiLineString.js +92 -0
- package/dist/esm/geo/multiPoint.d.ts +18 -0
- package/dist/esm/geo/multiPoint.js +76 -0
- package/dist/esm/geo/multiPolygon.d.ts +18 -0
- package/dist/esm/geo/multiPolygon.js +119 -0
- package/dist/esm/geo/point.d.ts +19 -0
- package/dist/esm/geo/point.js +47 -0
- package/dist/esm/geo/polygon.d.ts +19 -0
- package/dist/esm/geo/polygon.js +106 -0
- package/dist/esm/helper/symbol.d.ts +14 -0
- package/dist/esm/helper/symbol.js +14 -0
- package/dist/esm/index.d.ts +33 -0
- package/dist/esm/index.js +41 -0
- package/dist/esm/lib/util.d.ts +1 -0
- package/dist/esm/lib/util.js +23 -0
- package/dist/esm/operator-map.d.ts +4 -0
- package/dist/esm/operator-map.js +20 -0
- package/dist/esm/query.d.ts +22 -0
- package/dist/esm/query.js +249 -0
- package/dist/esm/regexp/index.d.ts +14 -0
- package/dist/esm/regexp/index.js +29 -0
- package/dist/esm/serializer/common.d.ts +11 -0
- package/dist/esm/serializer/common.js +113 -0
- package/dist/esm/serializer/datatype.d.ts +7 -0
- package/dist/esm/serializer/datatype.js +122 -0
- package/dist/esm/serializer/query.d.ts +7 -0
- package/dist/esm/serializer/query.js +229 -0
- package/dist/esm/serializer/update.d.ts +15 -0
- package/dist/esm/serializer/update.js +139 -0
- package/dist/esm/serverDate/index.d.ts +13 -0
- package/dist/esm/serverDate/index.js +26 -0
- package/dist/esm/transaction/collection.d.ts +7 -0
- package/dist/esm/transaction/collection.js +44 -0
- package/dist/esm/transaction/document.d.ts +27 -0
- package/dist/esm/transaction/document.js +203 -0
- package/dist/esm/transaction/index.d.ts +30 -0
- package/dist/esm/transaction/index.js +210 -0
- package/dist/esm/transaction/query.d.ts +5 -0
- package/dist/esm/transaction/query.js +8 -0
- package/dist/esm/typings/index.d.ts +40 -0
- package/dist/esm/typings/index.js +0 -0
- package/dist/esm/typings/realtime.d.ts +219 -0
- package/dist/esm/typings/realtime.js +0 -0
- package/dist/esm/util.d.ts +9 -0
- package/dist/esm/util.js +142 -0
- package/dist/esm/utils/error.d.ts +37 -0
- package/dist/esm/utils/error.js +82 -0
- package/dist/esm/utils/msg.d.ts +0 -0
- package/dist/esm/utils/msg.js +0 -0
- package/dist/esm/utils/symbol.d.ts +8 -0
- package/dist/esm/utils/symbol.js +55 -0
- package/dist/esm/utils/type.d.ts +13 -0
- package/dist/esm/utils/type.js +20 -0
- package/dist/esm/utils/utils.d.ts +4 -0
- package/dist/esm/utils/utils.js +33 -0
- package/dist/esm/validate.d.ts +1 -0
- package/dist/esm/validate.js +57 -0
- package/package.json +4 -6
- package/src/transaction/document.ts +2 -2
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { SYMBOL_UNSET_FIELD_NAME, SYMBOL_UPDATE_COMMAND } from '../helper/symbol';
|
|
2
|
+
export var UPDATE_COMMANDS_LITERAL;
|
|
3
|
+
(function (UPDATE_COMMANDS_LITERAL) {
|
|
4
|
+
UPDATE_COMMANDS_LITERAL["SET"] = "set";
|
|
5
|
+
UPDATE_COMMANDS_LITERAL["REMOVE"] = "remove";
|
|
6
|
+
UPDATE_COMMANDS_LITERAL["INC"] = "inc";
|
|
7
|
+
UPDATE_COMMANDS_LITERAL["MUL"] = "mul";
|
|
8
|
+
UPDATE_COMMANDS_LITERAL["PUSH"] = "push";
|
|
9
|
+
UPDATE_COMMANDS_LITERAL["PULL"] = "pull";
|
|
10
|
+
UPDATE_COMMANDS_LITERAL["PULL_ALL"] = "pullAll";
|
|
11
|
+
UPDATE_COMMANDS_LITERAL["POP"] = "pop";
|
|
12
|
+
UPDATE_COMMANDS_LITERAL["SHIFT"] = "shift";
|
|
13
|
+
UPDATE_COMMANDS_LITERAL["UNSHIFT"] = "unshift";
|
|
14
|
+
UPDATE_COMMANDS_LITERAL["ADD_TO_SET"] = "addToSet";
|
|
15
|
+
UPDATE_COMMANDS_LITERAL["BIT"] = "bit";
|
|
16
|
+
UPDATE_COMMANDS_LITERAL["RENAME"] = "rename";
|
|
17
|
+
UPDATE_COMMANDS_LITERAL["MAX"] = "max";
|
|
18
|
+
UPDATE_COMMANDS_LITERAL["MIN"] = "min";
|
|
19
|
+
})(UPDATE_COMMANDS_LITERAL || (UPDATE_COMMANDS_LITERAL = {}));
|
|
20
|
+
var UpdateCommand = (function () {
|
|
21
|
+
function UpdateCommand(operator, operands, fieldName) {
|
|
22
|
+
this._internalType = SYMBOL_UPDATE_COMMAND;
|
|
23
|
+
Object.defineProperties(this, {
|
|
24
|
+
_internalType: {
|
|
25
|
+
enumerable: false,
|
|
26
|
+
configurable: false,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
this.operator = operator;
|
|
30
|
+
this.operands = operands;
|
|
31
|
+
this.fieldName = fieldName || SYMBOL_UNSET_FIELD_NAME;
|
|
32
|
+
}
|
|
33
|
+
UpdateCommand.prototype._setFieldName = function (fieldName) {
|
|
34
|
+
var command = new UpdateCommand(this.operator, this.operands, fieldName);
|
|
35
|
+
return command;
|
|
36
|
+
};
|
|
37
|
+
return UpdateCommand;
|
|
38
|
+
}());
|
|
39
|
+
export { UpdateCommand };
|
|
40
|
+
export function isUpdateCommand(object) {
|
|
41
|
+
return object && (object instanceof UpdateCommand) && (object._internalType === SYMBOL_UPDATE_COMMAND);
|
|
42
|
+
}
|
|
43
|
+
export function isKnownUpdateCommand(object) {
|
|
44
|
+
return isUpdateCommand(object) && (object.operator.toUpperCase() in UPDATE_COMMANDS_LITERAL);
|
|
45
|
+
}
|
|
46
|
+
export default UpdateCommand;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export var ERR_CODE = {
|
|
2
|
+
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
|
|
3
|
+
SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL: 'SDK_DATABASE_REALTIME_LISTENER_INIT_WATCH_FAIL',
|
|
4
|
+
SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL: 'SDK_DATABASE_REALTIME_LISTENER_RECONNECT_WATCH_FAIL',
|
|
5
|
+
SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL: 'SDK_DATABASE_REALTIME_LISTENER_REBUILD_WATCH_FAIL',
|
|
6
|
+
SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL: 'SDK_DATABASE_REALTIME_LISTENER_CLOSE_WATCH_FAIL',
|
|
7
|
+
SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG: 'SDK_DATABASE_REALTIME_LISTENER_SERVER_ERROR_MSG',
|
|
8
|
+
SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA: 'SDK_DATABASE_REALTIME_LISTENER_RECEIVE_INVALID_SERVER_DATA',
|
|
9
|
+
SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR: 'SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_ERROR',
|
|
10
|
+
SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED: 'SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED',
|
|
11
|
+
SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL: 'SDK_DATABASE_REALTIME_LISTENER_CHECK_LAST_FAIL',
|
|
12
|
+
SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR: 'SDK_DATABASE_REALTIME_LISTENER_UNEXPECTED_FATAL_ERROR'
|
|
13
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const ERRORS: {
|
|
2
|
+
CREATE_WATCH_NET_ERROR: {
|
|
3
|
+
code: string;
|
|
4
|
+
message: string;
|
|
5
|
+
};
|
|
6
|
+
CREATE_WACTH_EXCEED_ERROR: {
|
|
7
|
+
code: string;
|
|
8
|
+
message: string;
|
|
9
|
+
};
|
|
10
|
+
CREATE_WATCH_SERVER_ERROR: {
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
CONN_ERROR: {
|
|
15
|
+
code: string;
|
|
16
|
+
message: string;
|
|
17
|
+
};
|
|
18
|
+
INVALID_PARAM: {
|
|
19
|
+
code: string;
|
|
20
|
+
message: string;
|
|
21
|
+
};
|
|
22
|
+
INSERT_DOC_FAIL: {
|
|
23
|
+
code: string;
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
26
|
+
DATABASE_TRANSACTION_CONFLICT: {
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export var ERRORS = {
|
|
2
|
+
CREATE_WATCH_NET_ERROR: {
|
|
3
|
+
code: 'CREATE_WATCH_NET_ERROR',
|
|
4
|
+
message: 'create watch network error'
|
|
5
|
+
},
|
|
6
|
+
CREATE_WACTH_EXCEED_ERROR: {
|
|
7
|
+
code: 'CREATE_WACTH_EXCEED_ERROR',
|
|
8
|
+
message: 'maximum connections exceed'
|
|
9
|
+
},
|
|
10
|
+
CREATE_WATCH_SERVER_ERROR: {
|
|
11
|
+
code: 'CREATE_WATCH_SERVER_ERROR',
|
|
12
|
+
message: 'create watch server error'
|
|
13
|
+
},
|
|
14
|
+
CONN_ERROR: {
|
|
15
|
+
code: 'CONN_ERROR',
|
|
16
|
+
message: 'connection error'
|
|
17
|
+
},
|
|
18
|
+
INVALID_PARAM: {
|
|
19
|
+
code: 'INVALID_PARAM',
|
|
20
|
+
message: 'Invalid request param'
|
|
21
|
+
},
|
|
22
|
+
INSERT_DOC_FAIL: {
|
|
23
|
+
code: 'INSERT_DOC_FAIL',
|
|
24
|
+
message: 'insert document failed'
|
|
25
|
+
},
|
|
26
|
+
DATABASE_TRANSACTION_CONFLICT: {
|
|
27
|
+
code: 'DATABASE_TRANSACTION_CONFLICT',
|
|
28
|
+
message: 'database transaction conflict'
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
declare enum ErrorCode {
|
|
2
|
+
DocIDError = "\u6587\u6863ID\u4E0D\u5408\u6CD5",
|
|
3
|
+
CollNameError = "\u96C6\u5408\u540D\u79F0\u4E0D\u5408\u6CD5",
|
|
4
|
+
OpStrError = "\u64CD\u4F5C\u7B26\u4E0D\u5408\u6CD5",
|
|
5
|
+
DirectionError = "\u6392\u5E8F\u5B57\u7B26\u4E0D\u5408\u6CD5",
|
|
6
|
+
IntergerError = "must be integer",
|
|
7
|
+
QueryParamTypeError = "\u67E5\u8BE2\u53C2\u6570\u5FC5\u987B\u4E3A\u5BF9\u8C61",
|
|
8
|
+
QueryParamValueError = "\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\u503C\u4E0D\u80FD\u5747\u4E3Aundefined"
|
|
9
|
+
}
|
|
10
|
+
declare const FieldType: {
|
|
11
|
+
String: string;
|
|
12
|
+
Number: string;
|
|
13
|
+
Object: string;
|
|
14
|
+
Array: string;
|
|
15
|
+
Boolean: string;
|
|
16
|
+
Null: string;
|
|
17
|
+
GeoPoint: string;
|
|
18
|
+
GeoLineString: string;
|
|
19
|
+
GeoPolygon: string;
|
|
20
|
+
GeoMultiPoint: string;
|
|
21
|
+
GeoMultiLineString: string;
|
|
22
|
+
GeoMultiPolygon: string;
|
|
23
|
+
Timestamp: string;
|
|
24
|
+
Command: string;
|
|
25
|
+
ServerDate: string;
|
|
26
|
+
BsonDate: string;
|
|
27
|
+
};
|
|
28
|
+
declare type OrderByDirection = 'desc' | 'asc';
|
|
29
|
+
declare const OrderDirectionList: string[];
|
|
30
|
+
declare type WhereFilterOp = '<' | '<=' | '==' | '>=' | '>';
|
|
31
|
+
declare const WhereFilterOpList: string[];
|
|
32
|
+
declare enum Opeartor {
|
|
33
|
+
lt = "<",
|
|
34
|
+
gt = ">",
|
|
35
|
+
lte = "<=",
|
|
36
|
+
gte = ">=",
|
|
37
|
+
eq = "=="
|
|
38
|
+
}
|
|
39
|
+
declare const OperatorMap: {
|
|
40
|
+
[Opeartor.eq]: string;
|
|
41
|
+
[Opeartor.lt]: string;
|
|
42
|
+
[Opeartor.lte]: string;
|
|
43
|
+
[Opeartor.gt]: string;
|
|
44
|
+
[Opeartor.gte]: string;
|
|
45
|
+
};
|
|
46
|
+
declare const UpdateOperatorList: string[];
|
|
47
|
+
declare enum QueryType {
|
|
48
|
+
WHERE = "WHERE",
|
|
49
|
+
DOC = "DOC"
|
|
50
|
+
}
|
|
51
|
+
export { ErrorCode, FieldType, WhereFilterOp, WhereFilterOpList, Opeartor, OperatorMap, OrderByDirection, OrderDirectionList, UpdateOperatorList, QueryType };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
var ErrorCode;
|
|
3
|
+
(function (ErrorCode) {
|
|
4
|
+
ErrorCode["DocIDError"] = "\u6587\u6863ID\u4E0D\u5408\u6CD5";
|
|
5
|
+
ErrorCode["CollNameError"] = "\u96C6\u5408\u540D\u79F0\u4E0D\u5408\u6CD5";
|
|
6
|
+
ErrorCode["OpStrError"] = "\u64CD\u4F5C\u7B26\u4E0D\u5408\u6CD5";
|
|
7
|
+
ErrorCode["DirectionError"] = "\u6392\u5E8F\u5B57\u7B26\u4E0D\u5408\u6CD5";
|
|
8
|
+
ErrorCode["IntergerError"] = "must be integer";
|
|
9
|
+
ErrorCode["QueryParamTypeError"] = "\u67E5\u8BE2\u53C2\u6570\u5FC5\u987B\u4E3A\u5BF9\u8C61";
|
|
10
|
+
ErrorCode["QueryParamValueError"] = "\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\u503C\u4E0D\u80FD\u5747\u4E3Aundefined";
|
|
11
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
12
|
+
var FieldType = {
|
|
13
|
+
String: 'String',
|
|
14
|
+
Number: 'Number',
|
|
15
|
+
Object: 'Object',
|
|
16
|
+
Array: 'Array',
|
|
17
|
+
Boolean: 'Boolean',
|
|
18
|
+
Null: 'Null',
|
|
19
|
+
GeoPoint: 'GeoPoint',
|
|
20
|
+
GeoLineString: 'GeoLineString',
|
|
21
|
+
GeoPolygon: 'GeoPolygon',
|
|
22
|
+
GeoMultiPoint: 'GeoMultiPoint',
|
|
23
|
+
GeoMultiLineString: 'GeoMultiLineString',
|
|
24
|
+
GeoMultiPolygon: 'GeoMultiPolygon',
|
|
25
|
+
Timestamp: 'Date',
|
|
26
|
+
Command: 'Command',
|
|
27
|
+
ServerDate: 'ServerDate',
|
|
28
|
+
BsonDate: 'BsonDate'
|
|
29
|
+
};
|
|
30
|
+
var OrderDirectionList = ['desc', 'asc'];
|
|
31
|
+
var WhereFilterOpList = ['<', '<=', '==', '>=', '>'];
|
|
32
|
+
var Opeartor;
|
|
33
|
+
(function (Opeartor) {
|
|
34
|
+
Opeartor["lt"] = "<";
|
|
35
|
+
Opeartor["gt"] = ">";
|
|
36
|
+
Opeartor["lte"] = "<=";
|
|
37
|
+
Opeartor["gte"] = ">=";
|
|
38
|
+
Opeartor["eq"] = "==";
|
|
39
|
+
})(Opeartor || (Opeartor = {}));
|
|
40
|
+
var OperatorMap = (_a = {},
|
|
41
|
+
_a[Opeartor.eq] = '$eq',
|
|
42
|
+
_a[Opeartor.lt] = '$lt',
|
|
43
|
+
_a[Opeartor.lte] = '$lte',
|
|
44
|
+
_a[Opeartor.gt] = '$gt',
|
|
45
|
+
_a[Opeartor.gte] = '$gte',
|
|
46
|
+
_a);
|
|
47
|
+
var UpdateOperatorList = [
|
|
48
|
+
'$set',
|
|
49
|
+
'$inc',
|
|
50
|
+
'$mul',
|
|
51
|
+
'$unset',
|
|
52
|
+
'$push',
|
|
53
|
+
'$pop',
|
|
54
|
+
'$unshift',
|
|
55
|
+
'$shift',
|
|
56
|
+
'$currentDate',
|
|
57
|
+
'$each',
|
|
58
|
+
'$position'
|
|
59
|
+
];
|
|
60
|
+
var QueryType;
|
|
61
|
+
(function (QueryType) {
|
|
62
|
+
QueryType["WHERE"] = "WHERE";
|
|
63
|
+
QueryType["DOC"] = "DOC";
|
|
64
|
+
})(QueryType || (QueryType = {}));
|
|
65
|
+
export { ErrorCode, FieldType, WhereFilterOpList, Opeartor, OperatorMap, OrderDirectionList, UpdateOperatorList, QueryType };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IWatchOptions, DBRealtimeListener } from './typings/index';
|
|
2
|
+
export declare class DocumentReference {
|
|
3
|
+
readonly id: string | number;
|
|
4
|
+
readonly projection: Object;
|
|
5
|
+
set(data: Object, callback?: any): Promise<any>;
|
|
6
|
+
update(data: Object, callback?: any): any;
|
|
7
|
+
remove(callback?: any): Promise<any>;
|
|
8
|
+
get(callback?: any): Promise<any>;
|
|
9
|
+
field(projection: Object): DocumentReference;
|
|
10
|
+
watch: (options: IWatchOptions) => DBRealtimeListener;
|
|
11
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
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 { Db } from './index';
|
|
14
|
+
import { Util } from './util';
|
|
15
|
+
import { UpdateSerializer } from './serializer/update';
|
|
16
|
+
import { serialize } from './serializer/datatype';
|
|
17
|
+
import { UpdateCommand } from './commands/update';
|
|
18
|
+
import { QueryType } from './constant';
|
|
19
|
+
import { getWsInstance } from './utils/utils';
|
|
20
|
+
var DocumentReference = (function () {
|
|
21
|
+
function DocumentReference(db, coll, docID, projection) {
|
|
22
|
+
var _this = this;
|
|
23
|
+
if (projection === void 0) { projection = {}; }
|
|
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({
|
|
27
|
+
_id: _this.id
|
|
28
|
+
}) }));
|
|
29
|
+
};
|
|
30
|
+
this._db = db;
|
|
31
|
+
this._coll = coll;
|
|
32
|
+
this.id = docID;
|
|
33
|
+
this.request = new Db.reqClass(this._db.config);
|
|
34
|
+
this.projection = projection;
|
|
35
|
+
}
|
|
36
|
+
DocumentReference.prototype.create = function (data, callback) {
|
|
37
|
+
callback = callback || createPromiseCallback();
|
|
38
|
+
var params = {
|
|
39
|
+
collectionName: this._coll,
|
|
40
|
+
data: serialize(data)
|
|
41
|
+
};
|
|
42
|
+
if (this.id) {
|
|
43
|
+
params['_id'] = this.id;
|
|
44
|
+
}
|
|
45
|
+
this.request
|
|
46
|
+
.send('database.addDocument', params)
|
|
47
|
+
.then(function (res) {
|
|
48
|
+
if (res.code) {
|
|
49
|
+
callback(0, res);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
callback(0, {
|
|
53
|
+
id: res.data._id,
|
|
54
|
+
requestId: res.requestId
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
.catch(function (err) {
|
|
59
|
+
callback(err);
|
|
60
|
+
});
|
|
61
|
+
return callback.promise;
|
|
62
|
+
};
|
|
63
|
+
DocumentReference.prototype.set = function (data, callback) {
|
|
64
|
+
callback = callback || createPromiseCallback();
|
|
65
|
+
if (!this.id) {
|
|
66
|
+
return Promise.resolve({
|
|
67
|
+
code: 'INVALID_PARAM',
|
|
68
|
+
message: 'docId不能为空'
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (!data || typeof data !== 'object') {
|
|
72
|
+
return Promise.resolve({
|
|
73
|
+
code: 'INVALID_PARAM',
|
|
74
|
+
message: '参数必需是非空对象'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (data.hasOwnProperty('_id')) {
|
|
78
|
+
return Promise.resolve({
|
|
79
|
+
code: 'INVALID_PARAM',
|
|
80
|
+
message: '不能更新_id的值'
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
var hasOperator = false;
|
|
84
|
+
var checkMixed = function (objs) {
|
|
85
|
+
if (typeof objs === 'object') {
|
|
86
|
+
for (var key in objs) {
|
|
87
|
+
if (objs[key] instanceof UpdateCommand) {
|
|
88
|
+
hasOperator = true;
|
|
89
|
+
}
|
|
90
|
+
else if (typeof objs[key] === 'object') {
|
|
91
|
+
checkMixed(objs[key]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
checkMixed(data);
|
|
97
|
+
if (hasOperator) {
|
|
98
|
+
return Promise.resolve({
|
|
99
|
+
code: 'DATABASE_REQUEST_FAILED',
|
|
100
|
+
message: 'update operator complicit'
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
var merge = false;
|
|
104
|
+
var param = {
|
|
105
|
+
collectionName: this._coll,
|
|
106
|
+
queryType: QueryType.DOC,
|
|
107
|
+
data: serialize(data),
|
|
108
|
+
multi: false,
|
|
109
|
+
merge: merge,
|
|
110
|
+
upsert: true
|
|
111
|
+
};
|
|
112
|
+
if (this.id) {
|
|
113
|
+
param['query'] = { _id: this.id };
|
|
114
|
+
}
|
|
115
|
+
this.request
|
|
116
|
+
.send('database.updateDocument', param)
|
|
117
|
+
.then(function (res) {
|
|
118
|
+
if (res.code) {
|
|
119
|
+
callback(0, res);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
callback(0, {
|
|
123
|
+
updated: res.data.updated,
|
|
124
|
+
upsertedId: res.data.upserted_id,
|
|
125
|
+
requestId: res.requestId
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
.catch(function (err) {
|
|
130
|
+
callback(err);
|
|
131
|
+
});
|
|
132
|
+
return callback.promise;
|
|
133
|
+
};
|
|
134
|
+
DocumentReference.prototype.update = function (data, callback) {
|
|
135
|
+
callback = callback || createPromiseCallback();
|
|
136
|
+
if (!data || typeof data !== 'object') {
|
|
137
|
+
return Promise.resolve({
|
|
138
|
+
code: 'INVALID_PARAM',
|
|
139
|
+
message: '参数必需是非空对象'
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (data.hasOwnProperty('_id')) {
|
|
143
|
+
return Promise.resolve({
|
|
144
|
+
code: 'INVALID_PARAM',
|
|
145
|
+
message: '不能更新_id的值'
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
var query = { _id: this.id };
|
|
149
|
+
var merge = true;
|
|
150
|
+
var param = {
|
|
151
|
+
collectionName: this._coll,
|
|
152
|
+
data: UpdateSerializer.encode(data),
|
|
153
|
+
query: query,
|
|
154
|
+
queryType: QueryType.DOC,
|
|
155
|
+
multi: false,
|
|
156
|
+
merge: merge,
|
|
157
|
+
upsert: false
|
|
158
|
+
};
|
|
159
|
+
this.request
|
|
160
|
+
.send('database.updateDocument', param)
|
|
161
|
+
.then(function (res) {
|
|
162
|
+
if (res.code) {
|
|
163
|
+
callback(0, res);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
callback(0, {
|
|
167
|
+
updated: res.data.updated,
|
|
168
|
+
upsertedId: res.data.upserted_id,
|
|
169
|
+
requestId: res.requestId
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
})
|
|
173
|
+
.catch(function (err) {
|
|
174
|
+
callback(err);
|
|
175
|
+
});
|
|
176
|
+
return callback.promise;
|
|
177
|
+
};
|
|
178
|
+
DocumentReference.prototype.remove = function (callback) {
|
|
179
|
+
callback = callback || createPromiseCallback();
|
|
180
|
+
var query = { _id: this.id };
|
|
181
|
+
var param = {
|
|
182
|
+
collectionName: this._coll,
|
|
183
|
+
query: query,
|
|
184
|
+
queryType: QueryType.DOC,
|
|
185
|
+
multi: false
|
|
186
|
+
};
|
|
187
|
+
this.request
|
|
188
|
+
.send('database.deleteDocument', param)
|
|
189
|
+
.then(function (res) {
|
|
190
|
+
if (res.code) {
|
|
191
|
+
callback(0, res);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
callback(0, {
|
|
195
|
+
deleted: res.data.deleted,
|
|
196
|
+
requestId: res.requestId
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
.catch(function (err) {
|
|
201
|
+
callback(err);
|
|
202
|
+
});
|
|
203
|
+
return callback.promise;
|
|
204
|
+
};
|
|
205
|
+
DocumentReference.prototype.get = function (callback) {
|
|
206
|
+
callback = callback || createPromiseCallback();
|
|
207
|
+
var query = { _id: this.id };
|
|
208
|
+
var param = {
|
|
209
|
+
collectionName: this._coll,
|
|
210
|
+
query: query,
|
|
211
|
+
queryType: QueryType.DOC,
|
|
212
|
+
multi: false,
|
|
213
|
+
projection: this.projection
|
|
214
|
+
};
|
|
215
|
+
this.request
|
|
216
|
+
.send('database.queryDocument', param)
|
|
217
|
+
.then(function (res) {
|
|
218
|
+
if (res.code) {
|
|
219
|
+
callback(0, res);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
var documents = Util.formatResDocumentData(res.data.list);
|
|
223
|
+
callback(0, {
|
|
224
|
+
data: documents,
|
|
225
|
+
requestId: res.requestId
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
})
|
|
229
|
+
.catch(function (err) {
|
|
230
|
+
callback(err);
|
|
231
|
+
});
|
|
232
|
+
return callback.promise;
|
|
233
|
+
};
|
|
234
|
+
DocumentReference.prototype.field = function (projection) {
|
|
235
|
+
for (var k in projection) {
|
|
236
|
+
if (projection[k]) {
|
|
237
|
+
projection[k] = 1;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
projection[k] = 0;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return new DocumentReference(this._db, this._coll, this.id, projection);
|
|
244
|
+
};
|
|
245
|
+
return DocumentReference;
|
|
246
|
+
}());
|
|
247
|
+
export { DocumentReference };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ISerializedPoint {
|
|
2
|
+
type: string;
|
|
3
|
+
coordinates: [number, number];
|
|
4
|
+
}
|
|
5
|
+
export interface ISerializedLineString {
|
|
6
|
+
type: string;
|
|
7
|
+
coordinates: [number, number][];
|
|
8
|
+
}
|
|
9
|
+
export interface ISerializedPolygon {
|
|
10
|
+
type: string;
|
|
11
|
+
coordinates: [number, number][][];
|
|
12
|
+
}
|
|
13
|
+
export interface ISerializedMultiPoint {
|
|
14
|
+
type: string;
|
|
15
|
+
coordinates: [number, number][];
|
|
16
|
+
}
|
|
17
|
+
export interface ISerializedMultiLineString {
|
|
18
|
+
type: string;
|
|
19
|
+
coordinates: [number, number][][];
|
|
20
|
+
}
|
|
21
|
+
export interface ISerializedMultiPolygon {
|
|
22
|
+
type: string;
|
|
23
|
+
coordinates: [number, number][][][];
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Point } from './point';
|
|
2
|
+
import { ISerializedLineString } from './interface';
|
|
3
|
+
export declare class LineString {
|
|
4
|
+
readonly points: Point[];
|
|
5
|
+
constructor(points: Point[]);
|
|
6
|
+
parse(key: any): {
|
|
7
|
+
[x: number]: {
|
|
8
|
+
type: string;
|
|
9
|
+
coordinates: number[][];
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
toJSON(): {
|
|
13
|
+
type: string;
|
|
14
|
+
coordinates: number[][];
|
|
15
|
+
};
|
|
16
|
+
static validate(lineString: ISerializedLineString): boolean;
|
|
17
|
+
static isClosed(lineString: LineString): boolean;
|
|
18
|
+
readonly _internalType: import("../utils/symbol").InternalSymbol;
|
|
19
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var __values = (this && this.__values) || function(o) {
|
|
2
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
3
|
+
if (m) return m.call(o);
|
|
4
|
+
if (o && typeof o.length === "number") return {
|
|
5
|
+
next: function () {
|
|
6
|
+
if (o && i >= o.length) o = void 0;
|
|
7
|
+
return { value: o && o[i++], done: !o };
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
11
|
+
};
|
|
12
|
+
import { SYMBOL_GEO_LINE_STRING } from '../helper/symbol';
|
|
13
|
+
import { Point } from './point';
|
|
14
|
+
import { isArray, isNumber } from '../utils/type';
|
|
15
|
+
var LineString = (function () {
|
|
16
|
+
function LineString(points) {
|
|
17
|
+
if (!isArray(points)) {
|
|
18
|
+
throw new TypeError("\"points\" must be of type Point[]. Received type " + typeof points);
|
|
19
|
+
}
|
|
20
|
+
if (points.length < 2) {
|
|
21
|
+
throw new Error('"points" must contain 2 points at least');
|
|
22
|
+
}
|
|
23
|
+
points.forEach(function (point) {
|
|
24
|
+
if (!(point instanceof Point)) {
|
|
25
|
+
throw new TypeError("\"points\" must be of type Point[]. Received type " + typeof point + "[]");
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
this.points = points;
|
|
29
|
+
}
|
|
30
|
+
LineString.prototype.parse = function (key) {
|
|
31
|
+
var _a;
|
|
32
|
+
return _a = {},
|
|
33
|
+
_a[key] = {
|
|
34
|
+
type: 'LineString',
|
|
35
|
+
coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })
|
|
36
|
+
},
|
|
37
|
+
_a;
|
|
38
|
+
};
|
|
39
|
+
LineString.prototype.toJSON = function () {
|
|
40
|
+
return {
|
|
41
|
+
type: 'LineString',
|
|
42
|
+
coordinates: this.points.map(function (point) { return point.toJSON().coordinates; })
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
LineString.validate = function (lineString) {
|
|
46
|
+
var e_1, _a;
|
|
47
|
+
if (lineString.type !== 'LineString' || !isArray(lineString.coordinates)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
for (var _b = __values(lineString.coordinates), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
52
|
+
var point = _c.value;
|
|
53
|
+
if (!isNumber(point[0]) || !isNumber(point[1])) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
59
|
+
finally {
|
|
60
|
+
try {
|
|
61
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
62
|
+
}
|
|
63
|
+
finally { if (e_1) throw e_1.error; }
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
67
|
+
LineString.isClosed = function (lineString) {
|
|
68
|
+
var firstPoint = lineString.points[0];
|
|
69
|
+
var lastPoint = lineString.points[lineString.points.length - 1];
|
|
70
|
+
if (firstPoint.latitude === lastPoint.latitude && firstPoint.longitude === lastPoint.longitude) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
Object.defineProperty(LineString.prototype, "_internalType", {
|
|
75
|
+
get: function () {
|
|
76
|
+
return SYMBOL_GEO_LINE_STRING;
|
|
77
|
+
},
|
|
78
|
+
enumerable: true,
|
|
79
|
+
configurable: true
|
|
80
|
+
});
|
|
81
|
+
return LineString;
|
|
82
|
+
}());
|
|
83
|
+
export { LineString };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LineString } from './lineString';
|
|
2
|
+
import { ISerializedMultiLineString } from './interface';
|
|
3
|
+
export declare class MultiLineString {
|
|
4
|
+
readonly lines: LineString[];
|
|
5
|
+
constructor(lines: LineString[]);
|
|
6
|
+
parse(key: any): {
|
|
7
|
+
[x: number]: {
|
|
8
|
+
type: string;
|
|
9
|
+
coordinates: number[][][];
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
toJSON(): {
|
|
13
|
+
type: string;
|
|
14
|
+
coordinates: number[][][];
|
|
15
|
+
};
|
|
16
|
+
static validate(multiLineString: ISerializedMultiLineString): boolean;
|
|
17
|
+
readonly _internalType: import("../utils/symbol").InternalSymbol;
|
|
18
|
+
}
|