@scx-js/scx-data 0.2.0 → 0.2.2
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/field_policy/AssignField.js +39 -0
- package/field_policy/FieldPolicy.js +34 -12
- package/field_policy/FieldPolicyBuilder.js +16 -16
- package/field_policy/FieldPolicyImpl.js +61 -40
- package/field_policy/FieldPolicyLike.js +111 -0
- package/field_policy/VirtualField.js +39 -0
- package/field_policy/serializer/FieldPolicySerializer.js +30 -5
- package/index.js +6 -7
- package/package.json +2 -2
- package/query/BuildControl.js +45 -0
- package/query/Condition.js +74 -0
- package/query/{WhereType.js → ConditionType.js} +0 -10
- package/query/Junction.js +25 -22
- package/query/Not.js +1 -1
- package/query/OrderBy.js +9 -10
- package/query/Query.js +8 -23
- package/query/QueryBuilder.js +49 -44
- package/query/QueryImpl.js +31 -64
- package/query/QueryLike.js +7 -17
- package/query/SkipIfInfo.js +42 -0
- package/query/WhereClause.js +6 -16
- package/query/serializer/QuerySerializer.js +113 -15
- package/query/GroupBy.js +0 -36
- package/query/QueryOption.js +0 -74
- package/query/Where.js +0 -59
- package/query/serializer/GroupBySerializer.js +0 -50
- package/query/serializer/OrderBySerializer.js +0 -54
- package/query/serializer/WhereSerializer.js +0 -100
package/query/QueryLike.js
CHANGED
@@ -16,12 +16,7 @@ class QueryLike extends Query {
|
|
16
16
|
return this;
|
17
17
|
}
|
18
18
|
|
19
|
-
|
20
|
-
this.query().groupBy(...groupByClauses);
|
21
|
-
return this;
|
22
|
-
}
|
23
|
-
|
24
|
-
orderBy(...orderByClauses) {
|
19
|
+
orderBys(...orderByClauses) {
|
25
20
|
this.query().orderBy(...orderByClauses);
|
26
21
|
return this;
|
27
22
|
}
|
@@ -81,23 +76,18 @@ class QueryLike extends Query {
|
|
81
76
|
return this;
|
82
77
|
}
|
83
78
|
|
84
|
-
|
85
|
-
this.query().
|
86
|
-
return this;
|
87
|
-
}
|
88
|
-
|
89
|
-
addOrderBy(...orderByClauses) {
|
90
|
-
this.query().addOrderBy(orderByClauses);
|
79
|
+
orderBy(...orderByClauses) {
|
80
|
+
this.query().orderBy(orderByClauses);
|
91
81
|
return this;
|
92
82
|
}
|
93
83
|
|
94
|
-
|
95
|
-
this.query().
|
84
|
+
asc(selector, ...controls) {
|
85
|
+
this.query().asc(selector,...controls);
|
96
86
|
return this;
|
97
87
|
}
|
98
88
|
|
99
|
-
|
100
|
-
this.query().
|
89
|
+
desc(selector, ...controls) {
|
90
|
+
this.query().desc(selector,...controls);
|
101
91
|
return this;
|
102
92
|
}
|
103
93
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import {SKIP_IF_BLANK_STRING, SKIP_IF_EMPTY_LIST, SKIP_IF_EMPTY_STRING, SKIP_IF_NULL} from "./BuildControl.js";
|
2
|
+
|
3
|
+
class SkipIfInfo {
|
4
|
+
skipIfNull;
|
5
|
+
skipIfEmptyList;
|
6
|
+
skipIfEmptyString;
|
7
|
+
skipIfBlankString;
|
8
|
+
|
9
|
+
constructor(skipIfNull, skipIfEmptyList, skipIfEmptyString, skipIfBlankString) {
|
10
|
+
this.skipIfNull = skipIfNull;
|
11
|
+
this.skipIfEmptyList = skipIfEmptyList;
|
12
|
+
this.skipIfEmptyString = skipIfEmptyString;
|
13
|
+
this.skipIfBlankString = skipIfBlankString;
|
14
|
+
}
|
15
|
+
|
16
|
+
}
|
17
|
+
|
18
|
+
function ofSkipIfInfo(...controls) {
|
19
|
+
let skipIfNull = false;
|
20
|
+
let skipIfEmptyList = false;
|
21
|
+
let skipIfEmptyString = false;
|
22
|
+
let skipIfBlankString = false;
|
23
|
+
for (let control of controls) {
|
24
|
+
if (control === SKIP_IF_NULL) {
|
25
|
+
skipIfNull = true;
|
26
|
+
} else if (control === SKIP_IF_EMPTY_LIST) {
|
27
|
+
skipIfEmptyList = true;
|
28
|
+
} else if (control === SKIP_IF_EMPTY_STRING) {
|
29
|
+
skipIfEmptyString = true;
|
30
|
+
} else if (control === SKIP_IF_BLANK_STRING) {
|
31
|
+
skipIfBlankString = true;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
return new SkipIfInfo(skipIfNull, skipIfEmptyList, skipIfEmptyString, skipIfBlankString);
|
36
|
+
|
37
|
+
}
|
38
|
+
|
39
|
+
export {
|
40
|
+
SkipIfInfo,
|
41
|
+
ofSkipIfInfo,
|
42
|
+
};
|
package/query/WhereClause.js
CHANGED
@@ -3,31 +3,21 @@ import {QueryImpl} from "./QueryImpl.js";
|
|
3
3
|
|
4
4
|
class WhereClause extends QueryLike {
|
5
5
|
|
6
|
-
#
|
6
|
+
#expression;
|
7
7
|
#params;
|
8
8
|
|
9
|
-
constructor(
|
9
|
+
constructor(expression, params) {
|
10
10
|
super();
|
11
|
-
this.#
|
11
|
+
this.#expression = expression;
|
12
12
|
this.#params = params;
|
13
13
|
}
|
14
14
|
|
15
|
-
/**
|
16
|
-
* 拼接
|
17
|
-
*
|
18
|
-
* @param other a
|
19
|
-
* @return WhereClause
|
20
|
-
*/
|
21
|
-
concat(other) {
|
22
|
-
return new WhereClause(this.#whereClause.concat(other.#whereClause), this.#params.concat(other.params));
|
23
|
-
}
|
24
|
-
|
25
15
|
isEmpty() {
|
26
|
-
return (this.#
|
16
|
+
return (this.#expression == null || this.#expression.isEmpty()) && (this.#params == null || this.#params.length === 0);
|
27
17
|
}
|
28
18
|
|
29
|
-
|
30
|
-
return this.#
|
19
|
+
expression() {
|
20
|
+
return this.#expression;
|
31
21
|
}
|
32
22
|
|
33
23
|
params() {
|
@@ -1,27 +1,125 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
1
|
+
import {WhereClause} from "../WhereClause.js";
|
2
|
+
import {And} from "../And.js";
|
3
|
+
import {Or} from "../Or.js";
|
4
|
+
import {Not} from "../Not.js";
|
5
|
+
import {Condition} from "../Condition.js";
|
4
6
|
|
5
7
|
class QuerySerializer {
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
toJson(query) {
|
10
|
+
return JSON.stringify(this.serialize(query), null, 2);
|
11
|
+
}
|
10
12
|
|
11
|
-
|
12
|
-
this
|
13
|
-
this.#groupBySerializer = new GroupBySerializer();
|
14
|
-
this.#orderBySerializer = new OrderBySerializer();
|
13
|
+
serialize(query) {
|
14
|
+
return this.serializeQuery(query);
|
15
15
|
}
|
16
16
|
|
17
17
|
serializeQuery(query) {
|
18
18
|
return {
|
19
19
|
"@type": "Query",
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
where: this.serializeWhere(query.getWhere?.()),
|
21
|
+
orderBys: this.serializeOrderBys(...(query.getOrderBys?.() ?? [])),
|
22
|
+
offset: query.getOffset?.(),
|
23
|
+
limit: query.getLimit?.(),
|
24
|
+
};
|
25
|
+
}
|
26
|
+
|
27
|
+
serializeWhere(obj) {
|
28
|
+
if (!obj) {
|
29
|
+
return null;
|
30
|
+
}
|
31
|
+
|
32
|
+
if (obj instanceof WhereClause) {
|
33
|
+
return this.serializeWhereClause(obj);
|
34
|
+
}
|
35
|
+
if (obj instanceof And) {
|
36
|
+
return this.serializeAnd(obj);
|
37
|
+
}
|
38
|
+
if (obj instanceof Or) {
|
39
|
+
return this.serializeOr(obj);
|
40
|
+
}
|
41
|
+
|
42
|
+
if (obj instanceof Not) {
|
43
|
+
return this.serializeNot(obj);
|
44
|
+
}
|
45
|
+
|
46
|
+
if (obj instanceof Condition) {
|
47
|
+
return this.serializeCondition(obj);
|
48
|
+
}
|
49
|
+
|
50
|
+
throw new Error(`Unknown Where type: ${obj?.type}`);
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
serializeWhereClause(w) {
|
55
|
+
return {
|
56
|
+
"@type": "WhereClause",
|
57
|
+
expression: w.expression(),
|
58
|
+
params: w.params(),
|
59
|
+
};
|
60
|
+
}
|
61
|
+
|
62
|
+
serializeAnd(a) {
|
63
|
+
return {
|
64
|
+
"@type": "And",
|
65
|
+
clauses: this.serializeWhereAll(a.clauses),
|
66
|
+
};
|
67
|
+
}
|
68
|
+
|
69
|
+
serializeOr(o) {
|
70
|
+
return {
|
71
|
+
"@type": "Or",
|
72
|
+
clauses: this.serializeWhereAll(o.clauses),
|
73
|
+
};
|
74
|
+
}
|
75
|
+
|
76
|
+
serializeNot(n) {
|
77
|
+
return {
|
78
|
+
"@type": "Not",
|
79
|
+
clause: this.serializeWhere(n.clause),
|
80
|
+
};
|
81
|
+
}
|
82
|
+
|
83
|
+
serializeCondition(w) {
|
84
|
+
return {
|
85
|
+
"@type": "Condition",
|
86
|
+
selector: w.selector(),
|
87
|
+
conditionType: w.conditionType(),
|
88
|
+
value1: w.value1(),
|
89
|
+
value2: w.value2(),
|
90
|
+
useExpression: w.useExpression(),
|
91
|
+
useExpressionValue: w.useExpressionValue(),
|
92
|
+
skipIfInfo: this.serializeSkipIfInfo(w.skipIfInfo()),
|
93
|
+
};
|
94
|
+
}
|
95
|
+
|
96
|
+
serializeWhereAll(objs) {
|
97
|
+
return objs.map(obj => this.serializeWhere(obj));
|
98
|
+
}
|
99
|
+
|
100
|
+
serializeOrderBys(...objs) {
|
101
|
+
return objs.map(obj => this.serializeOrderBy(obj));
|
102
|
+
}
|
103
|
+
|
104
|
+
serializeOrderBy(orderBy) {
|
105
|
+
return {
|
106
|
+
"@type": "OrderBy",
|
107
|
+
selector: orderBy.selector(),
|
108
|
+
orderByType: orderBy.orderByType(),
|
109
|
+
useExpression: orderBy.useExpression(),
|
110
|
+
};
|
111
|
+
}
|
112
|
+
|
113
|
+
serializeSkipIfInfo(info) {
|
114
|
+
if (!info) {
|
115
|
+
return null;
|
116
|
+
}
|
117
|
+
return {
|
118
|
+
"@type": "SkipIfInfo",
|
119
|
+
skipIfNull: info.skipIfNull,
|
120
|
+
skipIfEmptyList: info.skipIfEmptyList,
|
121
|
+
skipIfEmptyString: info.skipIfEmptyString,
|
122
|
+
skipIfBlankString: info.skipIfBlankString,
|
25
123
|
};
|
26
124
|
}
|
27
125
|
|
package/query/GroupBy.js
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
import {isBlank} from "@scx-js/scx-common";
|
2
|
-
import {QueryImpl} from "./QueryImpl.js";
|
3
|
-
import {QueryLike} from "./QueryLike.js";
|
4
|
-
import {ofInfo} from "./QueryOption.js";
|
5
|
-
|
6
|
-
class GroupBy extends QueryLike {
|
7
|
-
|
8
|
-
#name;
|
9
|
-
#info;
|
10
|
-
|
11
|
-
constructor(name, ...options) {
|
12
|
-
super();
|
13
|
-
if (isBlank(name)) {
|
14
|
-
throw new Error("GroupBy 参数错误 : 名称 不能为空 !!!");
|
15
|
-
}
|
16
|
-
this.#name = name;
|
17
|
-
this.#info = ofInfo(...options);
|
18
|
-
}
|
19
|
-
|
20
|
-
name() {
|
21
|
-
return this.#name;
|
22
|
-
}
|
23
|
-
|
24
|
-
info() {
|
25
|
-
return this.#info;
|
26
|
-
}
|
27
|
-
|
28
|
-
toQuery() {
|
29
|
-
return new QueryImpl().groupBy(this);
|
30
|
-
}
|
31
|
-
|
32
|
-
}
|
33
|
-
|
34
|
-
export {
|
35
|
-
GroupBy,
|
36
|
-
};
|
package/query/QueryOption.js
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
class QueryOption {
|
2
|
-
|
3
|
-
#value;
|
4
|
-
|
5
|
-
constructor(value) {
|
6
|
-
this.#value = value;
|
7
|
-
}
|
8
|
-
|
9
|
-
|
10
|
-
}
|
11
|
-
|
12
|
-
const REPLACE = new QueryOption("REPLACE");
|
13
|
-
const SKIP_IF_NULL = new QueryOption("SKIP_IF_NULL");
|
14
|
-
const SKIP_IF_EMPTY_LIST = new QueryOption("SKIP_IF_EMPTY_LIST");
|
15
|
-
const USE_ORIGINAL_NAME = new QueryOption("USE_ORIGINAL_NAME");
|
16
|
-
const USE_JSON_EXTRACT = new QueryOption("USE_JSON_EXTRACT");
|
17
|
-
const USE_ORIGINAL_VALUE = new QueryOption("USE_ORIGINAL_VALUE");
|
18
|
-
|
19
|
-
function ofInfo(...queryOptions) {
|
20
|
-
let replace = false;
|
21
|
-
let skipIfNull = false;
|
22
|
-
let skipIfEmptyList = false;
|
23
|
-
let useOriginalName = false;
|
24
|
-
let useJsonExtract = false;
|
25
|
-
let useOriginalValue = false;
|
26
|
-
for (let option of queryOptions) {
|
27
|
-
if (option === REPLACE) {
|
28
|
-
replace = true;
|
29
|
-
} else if (option === SKIP_IF_NULL) {
|
30
|
-
skipIfNull = true;
|
31
|
-
} else if (option === SKIP_IF_EMPTY_LIST) {
|
32
|
-
skipIfEmptyList = true;
|
33
|
-
} else if (option === USE_ORIGINAL_NAME) {
|
34
|
-
useOriginalName = true;
|
35
|
-
} else if (option === USE_JSON_EXTRACT) {
|
36
|
-
useJsonExtract = true;
|
37
|
-
} else if (option === USE_ORIGINAL_VALUE) {
|
38
|
-
useOriginalValue = true;
|
39
|
-
}
|
40
|
-
}
|
41
|
-
return new Info(replace, skipIfNull, skipIfEmptyList, useOriginalName, useJsonExtract, useOriginalValue);
|
42
|
-
}
|
43
|
-
|
44
|
-
class Info {
|
45
|
-
replace;
|
46
|
-
skipIfNull;
|
47
|
-
skipIfEmptyList;
|
48
|
-
useOriginalName;
|
49
|
-
useJsonExtract;
|
50
|
-
useOriginalValue;
|
51
|
-
|
52
|
-
|
53
|
-
constructor(replace, skipIfNull, skipIfEmptyList, useOriginalName, useJsonExtract, useOriginalValue) {
|
54
|
-
this.replace = replace;
|
55
|
-
this.skipIfNull = skipIfNull;
|
56
|
-
this.skipIfEmptyList = skipIfEmptyList;
|
57
|
-
this.useOriginalName = useOriginalName;
|
58
|
-
this.useJsonExtract = useJsonExtract;
|
59
|
-
this.useOriginalValue = useOriginalValue;
|
60
|
-
}
|
61
|
-
|
62
|
-
}
|
63
|
-
|
64
|
-
export {
|
65
|
-
QueryOption,
|
66
|
-
REPLACE,
|
67
|
-
SKIP_IF_NULL,
|
68
|
-
SKIP_IF_EMPTY_LIST,
|
69
|
-
USE_ORIGINAL_NAME,
|
70
|
-
USE_JSON_EXTRACT,
|
71
|
-
USE_ORIGINAL_VALUE,
|
72
|
-
Info,
|
73
|
-
ofInfo,
|
74
|
-
};
|
package/query/Where.js
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
import {QueryLike} from "./QueryLike.js";
|
2
|
-
import {isBlank} from "@scx-js/scx-common";
|
3
|
-
import {QueryImpl} from "./QueryImpl.js";
|
4
|
-
import {ofInfo} from "./QueryOption.js";
|
5
|
-
|
6
|
-
class Where extends QueryLike {
|
7
|
-
|
8
|
-
#name;
|
9
|
-
#whereType;
|
10
|
-
#value1;
|
11
|
-
#value2;
|
12
|
-
#info;
|
13
|
-
|
14
|
-
constructor(name, whereType, value1, value2, ...options) {
|
15
|
-
super();
|
16
|
-
//名称不能为空
|
17
|
-
if (isBlank(name)) {
|
18
|
-
throw new Error("Where 参数错误 : 名称 不能为空 !!!");
|
19
|
-
}
|
20
|
-
//类型也不能为空
|
21
|
-
if (whereType == null) {
|
22
|
-
throw new Error("Where 参数错误 : whereType 不能为空 !!!");
|
23
|
-
}
|
24
|
-
this.#name = name;
|
25
|
-
this.#whereType = whereType;
|
26
|
-
this.#value1 = value1;
|
27
|
-
this.#value2 = value2;
|
28
|
-
this.#info = ofInfo(...options);
|
29
|
-
}
|
30
|
-
|
31
|
-
name() {
|
32
|
-
return this.#name;
|
33
|
-
}
|
34
|
-
|
35
|
-
whereType() {
|
36
|
-
return this.#whereType;
|
37
|
-
}
|
38
|
-
|
39
|
-
value1() {
|
40
|
-
return this.#value1;
|
41
|
-
}
|
42
|
-
|
43
|
-
value2() {
|
44
|
-
return this.#value2;
|
45
|
-
}
|
46
|
-
|
47
|
-
info() {
|
48
|
-
return this.#info;
|
49
|
-
}
|
50
|
-
|
51
|
-
toQuery() {
|
52
|
-
return new QueryImpl().where(this);
|
53
|
-
}
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
|
-
export {
|
58
|
-
Where,
|
59
|
-
};
|
@@ -1,50 +0,0 @@
|
|
1
|
-
import {Query} from "../Query.js";
|
2
|
-
import {isArray} from "@scx-js/scx-common";
|
3
|
-
import {GroupBy} from "../GroupBy.js";
|
4
|
-
|
5
|
-
class GroupBySerializer {
|
6
|
-
|
7
|
-
serialize(obj) {
|
8
|
-
if (obj instanceof String) {
|
9
|
-
return this.serializeString(obj);
|
10
|
-
}
|
11
|
-
if (obj instanceof GroupBy) {
|
12
|
-
return this.serializeGroupBy(obj);
|
13
|
-
}
|
14
|
-
if (obj instanceof Query) {
|
15
|
-
return this.serializeQuery(obj.getWhere());
|
16
|
-
}
|
17
|
-
if (isArray(obj)) {
|
18
|
-
return this.serializeAll(obj);
|
19
|
-
}
|
20
|
-
return obj;
|
21
|
-
}
|
22
|
-
|
23
|
-
serializeString(str) {
|
24
|
-
return str;
|
25
|
-
}
|
26
|
-
|
27
|
-
serializeGroupBy(w) {
|
28
|
-
return {
|
29
|
-
"@type": "GroupBy",
|
30
|
-
"name": w.name(),
|
31
|
-
"info": w.info(),
|
32
|
-
};
|
33
|
-
}
|
34
|
-
|
35
|
-
serializeQuery(w) {
|
36
|
-
return this.serializeAll(w.getGroupBy());
|
37
|
-
}
|
38
|
-
|
39
|
-
|
40
|
-
serializeAll(objs) {
|
41
|
-
const arr = [];
|
42
|
-
for (let i = 0; i < objs.length; i = i + 1) {
|
43
|
-
arr[i] = this.serialize(objs[i]);
|
44
|
-
}
|
45
|
-
return arr;
|
46
|
-
}
|
47
|
-
|
48
|
-
}
|
49
|
-
|
50
|
-
export {GroupBySerializer};
|
@@ -1,54 +0,0 @@
|
|
1
|
-
import {Query} from "../Query.js";
|
2
|
-
import {isArray} from "@scx-js/scx-common";
|
3
|
-
import {OrderBy} from "../OrderBy.js";
|
4
|
-
|
5
|
-
class OrderBySerializer {
|
6
|
-
|
7
|
-
serialize(obj) {
|
8
|
-
if (obj instanceof String) {
|
9
|
-
return this.serializeString(obj);
|
10
|
-
}
|
11
|
-
if (obj instanceof OrderBy) {
|
12
|
-
return this.serializeOrderBy(obj);
|
13
|
-
}
|
14
|
-
if (obj instanceof Query) {
|
15
|
-
return this.serializeQuery(obj.getWhere());
|
16
|
-
}
|
17
|
-
if (isArray(obj)) {
|
18
|
-
return this.serializeAll(obj);
|
19
|
-
}
|
20
|
-
return obj;
|
21
|
-
}
|
22
|
-
|
23
|
-
serializeString(str) {
|
24
|
-
return str;
|
25
|
-
}
|
26
|
-
|
27
|
-
serializeOrderBy(w) {
|
28
|
-
return {
|
29
|
-
"@type": "OrderBy",
|
30
|
-
"name": w.name(),
|
31
|
-
"orderByType": w.orderByType(),
|
32
|
-
"info": w.info(),
|
33
|
-
};
|
34
|
-
}
|
35
|
-
|
36
|
-
serializeQuery(w) {
|
37
|
-
return this.serializeAll(w.getOrderBy());
|
38
|
-
}
|
39
|
-
|
40
|
-
|
41
|
-
serializeAll(objs) {
|
42
|
-
const arr = [];
|
43
|
-
for (let i = 0; i < objs.length; i = i + 1) {
|
44
|
-
arr[i] = this.serialize(objs[i]);
|
45
|
-
}
|
46
|
-
return arr;
|
47
|
-
}
|
48
|
-
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
export {
|
53
|
-
OrderBySerializer,
|
54
|
-
};
|
@@ -1,100 +0,0 @@
|
|
1
|
-
import {Where} from "../Where.js";
|
2
|
-
import {isArray} from "@scx-js/scx-common";
|
3
|
-
import {Query} from "../Query.js";
|
4
|
-
import {WhereClause} from "../WhereClause.js";
|
5
|
-
import {And} from "../And.js";
|
6
|
-
import {Or} from "../Or.js";
|
7
|
-
import {Not} from "../Not.js";
|
8
|
-
|
9
|
-
class WhereSerializer {
|
10
|
-
|
11
|
-
serialize(obj) {
|
12
|
-
if (obj instanceof String) {
|
13
|
-
return this.serializeString(obj);
|
14
|
-
}
|
15
|
-
if (obj instanceof WhereClause) {
|
16
|
-
return this.serializeWhereClause(obj);
|
17
|
-
}
|
18
|
-
if (obj instanceof And) {
|
19
|
-
return this.serializeAnd(obj);
|
20
|
-
}
|
21
|
-
if (obj instanceof Or) {
|
22
|
-
return this.serializeOr(obj);
|
23
|
-
}
|
24
|
-
if (obj instanceof Not) {
|
25
|
-
return this.serializeNot(obj);
|
26
|
-
}
|
27
|
-
if (obj instanceof Where) {
|
28
|
-
return this.serializeWhere(obj);
|
29
|
-
}
|
30
|
-
if (obj instanceof Query) {
|
31
|
-
return this.serializeQuery(obj.getWhere());
|
32
|
-
}
|
33
|
-
if (isArray(obj)) {
|
34
|
-
return this.serializeAll(obj);
|
35
|
-
}
|
36
|
-
return obj;
|
37
|
-
}
|
38
|
-
|
39
|
-
serializeString(str) {
|
40
|
-
return str;
|
41
|
-
}
|
42
|
-
|
43
|
-
serializeWhereClause(w) {
|
44
|
-
return {
|
45
|
-
"@type": "WhereClause",
|
46
|
-
"whereClause": w.whereClause(),
|
47
|
-
"params": w.params(),
|
48
|
-
};
|
49
|
-
}
|
50
|
-
|
51
|
-
serializeAnd(l) {
|
52
|
-
return {
|
53
|
-
"@type": "And",
|
54
|
-
"clauses": this.serializeAll(l.clauses()),
|
55
|
-
};
|
56
|
-
}
|
57
|
-
|
58
|
-
serializeOr(l) {
|
59
|
-
return {
|
60
|
-
"@type": "Or",
|
61
|
-
"clauses": this.serializeAll(l.clauses()),
|
62
|
-
};
|
63
|
-
}
|
64
|
-
|
65
|
-
serializeNot(l) {
|
66
|
-
return {
|
67
|
-
"@type": "Not",
|
68
|
-
"clauses": this.serialize(l.clause()),
|
69
|
-
};
|
70
|
-
}
|
71
|
-
|
72
|
-
serializeWhere(w) {
|
73
|
-
return {
|
74
|
-
"@type": "Where",
|
75
|
-
"name": w.name(),
|
76
|
-
"whereType": w.whereType(),
|
77
|
-
"value1": w.value1(),
|
78
|
-
"value2": w.value2(),
|
79
|
-
"info": w.info(),
|
80
|
-
};
|
81
|
-
}
|
82
|
-
|
83
|
-
serializeQuery(w) {
|
84
|
-
return this.serializeAll(w.getWhere());
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
|
-
serializeAll(objs) {
|
89
|
-
const arr = [];
|
90
|
-
for (let i = 0; i < objs.length; i = i + 1) {
|
91
|
-
arr[i] = this.serialize(objs[i]);
|
92
|
-
}
|
93
|
-
return arr;
|
94
|
-
}
|
95
|
-
|
96
|
-
}
|
97
|
-
|
98
|
-
export {
|
99
|
-
WhereSerializer,
|
100
|
-
};
|