interaqt 0.1.0
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/README.md +53 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/ActivityCall.d.ts +68 -0
- package/dist/runtime/ActivityCall.d.ts.map +1 -0
- package/dist/runtime/ActivityCall.js +379 -0
- package/dist/runtime/ActivityCall.js.map +1 -0
- package/dist/runtime/Controller.d.ts +60 -0
- package/dist/runtime/Controller.d.ts.map +1 -0
- package/dist/runtime/Controller.js +225 -0
- package/dist/runtime/Controller.js.map +1 -0
- package/dist/runtime/InteractionCall.d.ts +102 -0
- package/dist/runtime/InteractionCall.d.ts.map +1 -0
- package/dist/runtime/InteractionCall.js +385 -0
- package/dist/runtime/InteractionCall.js.map +1 -0
- package/dist/runtime/MonoSystem.d.ts +26 -0
- package/dist/runtime/MonoSystem.d.ts.map +1 -0
- package/dist/runtime/MonoSystem.js +331 -0
- package/dist/runtime/MonoSystem.js.map +1 -0
- package/dist/runtime/Mysql.d.ts +35 -0
- package/dist/runtime/Mysql.d.ts.map +1 -0
- package/dist/runtime/Mysql.js +171 -0
- package/dist/runtime/Mysql.js.map +1 -0
- package/dist/runtime/PostgreSQL.d.ts +36 -0
- package/dist/runtime/PostgreSQL.d.ts.map +1 -0
- package/dist/runtime/PostgreSQL.js +172 -0
- package/dist/runtime/PostgreSQL.js.map +1 -0
- package/dist/runtime/SQLite.d.ts +34 -0
- package/dist/runtime/SQLite.d.ts.map +1 -0
- package/dist/runtime/SQLite.js +146 -0
- package/dist/runtime/SQLite.js.map +1 -0
- package/dist/runtime/Scheduler.d.ts +81 -0
- package/dist/runtime/Scheduler.d.ts.map +1 -0
- package/dist/runtime/Scheduler.js +457 -0
- package/dist/runtime/Scheduler.js.map +1 -0
- package/dist/runtime/System.d.ts +312 -0
- package/dist/runtime/System.d.ts.map +1 -0
- package/dist/runtime/System.js +90 -0
- package/dist/runtime/System.js.map +1 -0
- package/dist/runtime/asyncInteractionContext.d.ts +3 -0
- package/dist/runtime/asyncInteractionContext.d.ts.map +1 -0
- package/dist/runtime/asyncInteractionContext.js +3 -0
- package/dist/runtime/asyncInteractionContext.js.map +1 -0
- package/dist/runtime/boolExpression.d.ts +23 -0
- package/dist/runtime/boolExpression.d.ts.map +1 -0
- package/dist/runtime/boolExpression.js +43 -0
- package/dist/runtime/boolExpression.js.map +1 -0
- package/dist/runtime/computedDataHandles/Any.d.ts +52 -0
- package/dist/runtime/computedDataHandles/Any.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Any.js +152 -0
- package/dist/runtime/computedDataHandles/Any.js.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts +108 -0
- package/dist/runtime/computedDataHandles/Computation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Computation.js +49 -0
- package/dist/runtime/computedDataHandles/Computation.js.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +42 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js +4 -0
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +1 -0
- package/dist/runtime/computedDataHandles/Count.d.ts +45 -0
- package/dist/runtime/computedDataHandles/Count.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Count.js +85 -0
- package/dist/runtime/computedDataHandles/Count.js.map +1 -0
- package/dist/runtime/computedDataHandles/Every.d.ts +56 -0
- package/dist/runtime/computedDataHandles/Every.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Every.js +178 -0
- package/dist/runtime/computedDataHandles/Every.js.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts +74 -0
- package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/StateMachine.js +180 -0
- package/dist/runtime/computedDataHandles/StateMachine.js.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts +26 -0
- package/dist/runtime/computedDataHandles/Transform.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/Transform.js +106 -0
- package/dist/runtime/computedDataHandles/Transform.js.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +57 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js +40 -0
- package/dist/runtime/computedDataHandles/TransitionFinder.js.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +57 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js +146 -0
- package/dist/runtime/computedDataHandles/WeightedSummation.js.map +1 -0
- package/dist/runtime/computedDataHandles/index.d.ts +7 -0
- package/dist/runtime/computedDataHandles/index.d.ts.map +1 -0
- package/dist/runtime/computedDataHandles/index.js +7 -0
- package/dist/runtime/computedDataHandles/index.js.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +15 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/server.d.ts +35 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +171 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/types/boolExpression.d.ts +22 -0
- package/dist/runtime/types/boolExpression.d.ts.map +1 -0
- package/dist/runtime/types/boolExpression.js +6 -0
- package/dist/runtime/types/boolExpression.js.map +1 -0
- package/dist/runtime/util.d.ts +10 -0
- package/dist/runtime/util.d.ts.map +1 -0
- package/dist/runtime/util.js +39 -0
- package/dist/runtime/util.js.map +1 -0
- package/dist/shared/BoolExp.d.ts +97 -0
- package/dist/shared/BoolExp.d.ts.map +1 -0
- package/dist/shared/BoolExp.js +252 -0
- package/dist/shared/BoolExp.js.map +1 -0
- package/dist/shared/activity/Activity.d.ts +465 -0
- package/dist/shared/activity/Activity.d.ts.map +1 -0
- package/dist/shared/activity/Activity.js +264 -0
- package/dist/shared/activity/Activity.js.map +1 -0
- package/dist/shared/activity/Condition.d.ts +75 -0
- package/dist/shared/activity/Condition.d.ts.map +1 -0
- package/dist/shared/activity/Condition.js +51 -0
- package/dist/shared/activity/Condition.js.map +1 -0
- package/dist/shared/activity/Data.d.ts +115 -0
- package/dist/shared/activity/Data.d.ts.map +1 -0
- package/dist/shared/activity/Data.js +89 -0
- package/dist/shared/activity/Data.js.map +1 -0
- package/dist/shared/attributive.d.ts +93 -0
- package/dist/shared/attributive.d.ts.map +1 -0
- package/dist/shared/attributive.js +59 -0
- package/dist/shared/attributive.js.map +1 -0
- package/dist/shared/computed.d.ts +607 -0
- package/dist/shared/computed.d.ts.map +1 -0
- package/dist/shared/computed.js +202 -0
- package/dist/shared/computed.js.map +1 -0
- package/dist/shared/createClass.d.ts +102 -0
- package/dist/shared/createClass.d.ts.map +1 -0
- package/dist/shared/createClass.js +276 -0
- package/dist/shared/createClass.js.map +1 -0
- package/dist/shared/dictionary/Dictionary.d.ts +40 -0
- package/dist/shared/dictionary/Dictionary.d.ts.map +1 -0
- package/dist/shared/dictionary/Dictionary.js +51 -0
- package/dist/shared/dictionary/Dictionary.js.map +1 -0
- package/dist/shared/entity/Entity.d.ts +149 -0
- package/dist/shared/entity/Entity.d.ts.map +1 -0
- package/dist/shared/entity/Entity.js +226 -0
- package/dist/shared/entity/Entity.js.map +1 -0
- package/dist/shared/index.d.ts +11 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +11 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/user/User.d.ts +21 -0
- package/dist/shared/user/User.d.ts.map +1 -0
- package/dist/shared/user/User.js +11 -0
- package/dist/shared/user/User.js.map +1 -0
- package/dist/shared/utils.d.ts +11 -0
- package/dist/shared/utils.d.ts.map +1 -0
- package/dist/shared/utils.js +19 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts +40 -0
- package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeInfo.js +147 -0
- package/dist/storage/erstorage/AttributeInfo.js.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts +33 -0
- package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/AttributeQuery.js +190 -0
- package/dist/storage/erstorage/AttributeQuery.js.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts +29 -0
- package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityQueryHandle.js +78 -0
- package/dist/storage/erstorage/EntityQueryHandle.js.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts +85 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -0
- package/dist/storage/erstorage/EntityToTableMap.js +262 -0
- package/dist/storage/erstorage/EntityToTableMap.js.map +1 -0
- package/dist/storage/erstorage/LinkInfo.d.ts +35 -0
- package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/LinkInfo.js +89 -0
- package/dist/storage/erstorage/LinkInfo.js.map +1 -0
- package/dist/storage/erstorage/MatchExp.d.ts +37 -0
- package/dist/storage/erstorage/MatchExp.d.ts.map +1 -0
- package/dist/storage/erstorage/MatchExp.js +211 -0
- package/dist/storage/erstorage/MatchExp.js.map +1 -0
- package/dist/storage/erstorage/Modifier.d.ts +23 -0
- package/dist/storage/erstorage/Modifier.d.ts.map +1 -0
- package/dist/storage/erstorage/Modifier.js +24 -0
- package/dist/storage/erstorage/Modifier.js.map +1 -0
- package/dist/storage/erstorage/NewRecordData.d.ts +42 -0
- package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -0
- package/dist/storage/erstorage/NewRecordData.js +178 -0
- package/dist/storage/erstorage/NewRecordData.js.map +1 -0
- package/dist/storage/erstorage/RecordInfo.d.ts +26 -0
- package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordInfo.js +111 -0
- package/dist/storage/erstorage/RecordInfo.js.map +1 -0
- package/dist/storage/erstorage/RecordQuery.d.ts +73 -0
- package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQuery.js +158 -0
- package/dist/storage/erstorage/RecordQuery.js.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts +84 -0
- package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -0
- package/dist/storage/erstorage/RecordQueryAgent.js +1130 -0
- package/dist/storage/erstorage/RecordQueryAgent.js.map +1 -0
- package/dist/storage/erstorage/Setup.d.ts +49 -0
- package/dist/storage/erstorage/Setup.d.ts.map +1 -0
- package/dist/storage/erstorage/Setup.js +400 -0
- package/dist/storage/erstorage/Setup.js.map +1 -0
- package/dist/storage/erstorage/util.d.ts +6 -0
- package/dist/storage/erstorage/util.d.ts.map +1 -0
- package/dist/storage/erstorage/util.js +25 -0
- package/dist/storage/erstorage/util.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/utils.d.ts +10 -0
- package/dist/storage/utils.d.ts.map +1 -0
- package/dist/storage/utils.js +48 -0
- package/dist/storage/utils.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { BoolExp } from "@shared";
|
|
2
|
+
import { assert } from "../utils.js";
|
|
3
|
+
import { RecordQueryTree } from "./RecordQuery.js";
|
|
4
|
+
export class MatchExp {
|
|
5
|
+
static atom(condition) {
|
|
6
|
+
assert(condition.key !== undefined, 'key cannot be undefined');
|
|
7
|
+
assert(Array.isArray(condition.value) && condition.value.length === 2, 'value must be array');
|
|
8
|
+
assert(condition.value[1] !== undefined, `${condition.key} value cannot be undefined`);
|
|
9
|
+
return BoolExp.atom(condition);
|
|
10
|
+
}
|
|
11
|
+
// TODO 支持更复杂的格式
|
|
12
|
+
static fromObject(condition) {
|
|
13
|
+
let root;
|
|
14
|
+
Object.entries(condition).forEach(([key, value]) => {
|
|
15
|
+
if (!root) {
|
|
16
|
+
root = MatchExp.atom({ key, value: ['=', value] });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
root = root.and({ key, value: ['=', value] });
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return root;
|
|
23
|
+
}
|
|
24
|
+
constructor(entityName, map, data, contextRootEntity, fromRelation) {
|
|
25
|
+
this.entityName = entityName;
|
|
26
|
+
this.map = map;
|
|
27
|
+
this.data = data;
|
|
28
|
+
this.contextRootEntity = contextRootEntity;
|
|
29
|
+
this.fromRelation = fromRelation;
|
|
30
|
+
this.xToOneQueryTree = new RecordQueryTree(this.entityName, this.map);
|
|
31
|
+
if (this.data) {
|
|
32
|
+
assert(this.data instanceof BoolExp, `match data is not a BoolExpression instance, you passed: ${this.data}`);
|
|
33
|
+
this.buildQueryTree(this.data, this.xToOneQueryTree);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
buildQueryTree(matchData, recordQueryTree) {
|
|
37
|
+
if (matchData.isExpression()) {
|
|
38
|
+
if (matchData.left) {
|
|
39
|
+
this.buildQueryTree(matchData.left, recordQueryTree);
|
|
40
|
+
}
|
|
41
|
+
if (matchData.right) {
|
|
42
|
+
this.buildQueryTree(matchData.right, recordQueryTree);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// variable
|
|
47
|
+
const matchAttributePath = matchData.data.key.split('.');
|
|
48
|
+
const namePath = [this.entityName].concat(matchAttributePath);
|
|
49
|
+
const attributeInfo = this.map.getInfoByPath(namePath);
|
|
50
|
+
// 直接就是 value 的情况不用管,没有 query 其他的实体。
|
|
51
|
+
// CAUTION 还有最后路径是 entity 但是 match 值是 EXIST 的不用管,因为会生成 exist 子句。只不过这里也不用特别处理,join 的表没用到会自动数据库忽略。
|
|
52
|
+
if ((matchAttributePath.length === 1 && attributeInfo.isValue)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const manyToManySymmetricPaths = this.map.spawnManyToManySymmetricPath(namePath);
|
|
56
|
+
if (attributeInfo.isRecord) {
|
|
57
|
+
if (manyToManySymmetricPaths) {
|
|
58
|
+
recordQueryTree.addRecord(manyToManySymmetricPaths[0].slice(1, Infinity));
|
|
59
|
+
recordQueryTree.addRecord(manyToManySymmetricPaths[1].slice(1, Infinity));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
recordQueryTree.addRecord(matchAttributePath);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
if (manyToManySymmetricPaths) {
|
|
67
|
+
recordQueryTree.addField(manyToManySymmetricPaths[0].slice(1, Infinity));
|
|
68
|
+
recordQueryTree.addField(manyToManySymmetricPaths[1].slice(1, Infinity));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// 最后一个是 attribute,所以不在 recordQueryTree 上。
|
|
72
|
+
recordQueryTree.addField(matchAttributePath);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
getFinalFieldName(matchAttributePath) {
|
|
78
|
+
const namePath = [this.entityName].concat(matchAttributePath.slice(0, -1));
|
|
79
|
+
return this.map.getTableAliasAndFieldName(namePath, matchAttributePath.at(-1)).slice(0, 2);
|
|
80
|
+
}
|
|
81
|
+
getReferenceFieldValue(valueStr) {
|
|
82
|
+
const matchAttributePath = valueStr.split('.');
|
|
83
|
+
const [tableAlias, rawFieldName] = this.map.getTableAliasAndFieldName([this.contextRootEntity || this.entityName].concat(matchAttributePath.slice(0, -1)), matchAttributePath.at(-1));
|
|
84
|
+
return `${tableAlias}.${rawFieldName}`;
|
|
85
|
+
}
|
|
86
|
+
getFinalFieldValue(isReferenceValue, key, value, fieldName, fieldType, p, db) {
|
|
87
|
+
let fieldValue = '';
|
|
88
|
+
let fieldParams = [];
|
|
89
|
+
const simpleOp = ['=', '>', '<', '<=', '>=', 'like', '!='];
|
|
90
|
+
if (simpleOp.includes(value[0]) || (value[0] === 'not' && value[1] !== null)) {
|
|
91
|
+
fieldValue = `${value[0]} ${p()}`;
|
|
92
|
+
fieldParams = [isReferenceValue ? this.getReferenceFieldValue(value[1]) : value[1]];
|
|
93
|
+
}
|
|
94
|
+
else if ((value[0] === 'not' && value[1] === null)) {
|
|
95
|
+
fieldValue = `IS NOT NULL`;
|
|
96
|
+
}
|
|
97
|
+
else if (value[0].toLowerCase() === 'in') {
|
|
98
|
+
assert(!isReferenceValue, 'reference value cannot use IN to match');
|
|
99
|
+
fieldValue = `IN (${value[1].map((x) => p()).join(',')})`;
|
|
100
|
+
fieldParams = value[1];
|
|
101
|
+
}
|
|
102
|
+
else if (value[0].toLowerCase() === 'between') {
|
|
103
|
+
fieldValue = `BETWEEN ${p()} AND ${p()}`;
|
|
104
|
+
fieldParams = [
|
|
105
|
+
isReferenceValue ? this.getReferenceFieldValue(value[1][0]) : value[1][0],
|
|
106
|
+
isReferenceValue ? this.getReferenceFieldValue(value[1][1]) : value[1][1]
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
let result;
|
|
111
|
+
if (db) {
|
|
112
|
+
// JSON 操作符写法等由外部具体 db 实现
|
|
113
|
+
// FIXME 如果外部不知 value 的具体格式,又怎么知道这是一个 referenceValue ???这里要重新设计
|
|
114
|
+
result = db.parseMatchExpression?.(key, value, fieldName, fieldType, isReferenceValue, this.getReferenceFieldValue.bind(this), p);
|
|
115
|
+
}
|
|
116
|
+
if (result) {
|
|
117
|
+
fieldValue = result.fieldValue;
|
|
118
|
+
fieldParams = result.fieldParams || [];
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
assert(result, `unknown value expression ${JSON.stringify(value)}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return [fieldValue, fieldParams];
|
|
125
|
+
}
|
|
126
|
+
buildFieldMatchExpression(p, db) {
|
|
127
|
+
if (!this.data)
|
|
128
|
+
return null;
|
|
129
|
+
// 1. 所有 key 要 build 成 field
|
|
130
|
+
// 2. x:n 关系中的 EXIST 要增加查询范围限制,要把 value 中对上层引用也 build 成 field。
|
|
131
|
+
return this.data.map((exp) => {
|
|
132
|
+
const matchAttributePath = exp.data.key.split('.');
|
|
133
|
+
const attributeInfo = this.map.getInfoByPath([this.entityName].concat(matchAttributePath));
|
|
134
|
+
const namePath = [this.entityName].concat(matchAttributePath);
|
|
135
|
+
const symmetricPaths = this.map.spawnManyToManySymmetricPath(namePath);
|
|
136
|
+
let sourcePath, targetPath;
|
|
137
|
+
if (symmetricPaths) {
|
|
138
|
+
// 要去除 头部 的 entity
|
|
139
|
+
sourcePath = symmetricPaths[0].slice(1, Infinity);
|
|
140
|
+
targetPath = symmetricPaths[1].slice(1, Infinity);
|
|
141
|
+
}
|
|
142
|
+
// 如果结尾是 value
|
|
143
|
+
// 如果极为是 entity,那么后面匹配条件目前只能支持 EXIST。
|
|
144
|
+
// CAUTION 针对关联实体的属性匹配,到这里已经被拍平了,所以结尾是 entity 的情况必定都是函数匹配。
|
|
145
|
+
if (attributeInfo.isValue) {
|
|
146
|
+
// CAUTION 路径中只可能有一个 n:n symmetric 关系。因为路径中有多个的在语义逻辑上就不正确。
|
|
147
|
+
// 有一个的情况还是用在 findRelatedRecords 的时候才有意义。因为它会通过 id 限定关系,而即使是 n:n 的关系,任意两个实体中只会有一个关系数据。所以这个时候能找到唯一的数据,是有意义的。
|
|
148
|
+
const fieldNamePath = this.getFinalFieldName(matchAttributePath);
|
|
149
|
+
const [fieldValue, fieldParams] = this.getFinalFieldValue(exp.data.isReferenceValue, exp.data.key, exp.data.value, fieldNamePath.join('.'), attributeInfo.fieldType, p, db);
|
|
150
|
+
if (!symmetricPaths) {
|
|
151
|
+
return {
|
|
152
|
+
...exp.data,
|
|
153
|
+
fieldName: fieldNamePath,
|
|
154
|
+
fieldValue,
|
|
155
|
+
fieldParams
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
// 这里一定要再生成一次,应为需要不同的 placeholder。
|
|
159
|
+
const [fieldValue2, fieldParams2] = this.getFinalFieldValue(exp.data.isReferenceValue, exp.data.key, exp.data.value, fieldNamePath.join('.'), attributeInfo.fieldType, p, db);
|
|
160
|
+
// CAUTION 注意这里 length -2 是因为 namePath 里面有 this.entityName
|
|
161
|
+
return BoolExp.atom({
|
|
162
|
+
...exp.data,
|
|
163
|
+
fieldName: this.getFinalFieldName(sourcePath),
|
|
164
|
+
fieldValue,
|
|
165
|
+
fieldParams
|
|
166
|
+
}).or({
|
|
167
|
+
...exp.data,
|
|
168
|
+
fieldName: this.getFinalFieldName(targetPath),
|
|
169
|
+
fieldValue: fieldValue2,
|
|
170
|
+
fieldParams: fieldParams2
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// CAUTION record 的情况只有可能 n:n 关系
|
|
175
|
+
// CAUTION 函数匹配的情况不管了,因为可能未来涉及到使用 cursor 实现更强的功能,这就涉及到查询计划的修改了。统统扔到上层去做。
|
|
176
|
+
// 注意,子查询中也可能对上层的引用,这个也放到上层好像能力有点重叠了。
|
|
177
|
+
if (!symmetricPaths) {
|
|
178
|
+
return {
|
|
179
|
+
...exp.data,
|
|
180
|
+
namePath,
|
|
181
|
+
isFunctionMatch: true,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const sourceNamePath = [this.entityName].concat(sourcePath);
|
|
185
|
+
const targetNamePath = [this.entityName].concat(targetPath);
|
|
186
|
+
assert(sourceNamePath.length === namePath.length, `symmetric entity match can only be last, ${sourceNamePath} ${namePath}`);
|
|
187
|
+
return BoolExp.atom({
|
|
188
|
+
...exp.data,
|
|
189
|
+
namePath: sourceNamePath,
|
|
190
|
+
isFunctionMatch: true,
|
|
191
|
+
}).or({
|
|
192
|
+
...exp.data,
|
|
193
|
+
namePath: targetNamePath,
|
|
194
|
+
isFunctionMatch: true,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
and(condition) {
|
|
200
|
+
if (condition instanceof MatchExp) {
|
|
201
|
+
return new MatchExp(this.entityName, this.map, this.data ? this.data.and(condition.data) : condition.data, this.contextRootEntity);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
assert(condition.key !== undefined, 'key cannot be undefined');
|
|
205
|
+
assert(Array.isArray(condition.value) && condition.value.length === 2, 'value must be array');
|
|
206
|
+
assert(condition.value[1] !== undefined, `${condition.key} value cannot be undefined`);
|
|
207
|
+
return new MatchExp(this.entityName, this.map, this.data ? this.data.and(condition) : BoolExp.atom(condition), this.contextRootEntity);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=MatchExp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MatchExp.js","sourceRoot":"","sources":["../../../src/storage/erstorage/MatchExp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAkBjD,MAAM,OAAO,QAAQ;IACV,MAAM,CAAC,IAAI,CAAC,SAAoB;QACnC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE,yBAAyB,CAAC,CAAA;QAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAC7F,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,GAAG,SAAS,CAAC,GAAG,4BAA4B,CAAC,CAAA;QACtF,OAAO,OAAO,CAAC,IAAI,CAAY,SAAS,CAAC,CAAA;IAC7C,CAAC;IACD,gBAAgB;IACT,MAAM,CAAC,UAAU,CAAC,SAAiB;QACtC,IAAI,IAAoC,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAC,CAAC,CAAA;YACpD,CAAC;iBAAO,CAAC;gBACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAC,CAAC,CAAA;YAC/C,CAAC;QACP,CAAC,CAAC,CAAA;QACF,OAAO,IAAK,CAAA;IAChB,CAAC;IAID,YAAmB,UAAkB,EAAS,GAAqB,EAAS,IAA0B,EAAS,iBAA0B,EAAS,YAAsB;QAArJ,eAAU,GAAV,UAAU,CAAQ;QAAS,QAAG,GAAH,GAAG,CAAkB;QAAS,SAAI,GAAJ,IAAI,CAAsB;QAAS,sBAAiB,GAAjB,iBAAiB,CAAS;QAAS,iBAAY,GAAZ,YAAY,CAAU;QACpK,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACrE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,OAAO,EAAE,4DAA4D,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACxD,CAAC;IACL,CAAC;IAED,cAAc,CAAC,SAA8B,EAAE,eAAgC;QAC3E,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3B,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;YACxD,CAAC;YAED,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;YACzD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,WAAW;YACX,MAAM,kBAAkB,GAAI,SAAS,CAAC,IAAI,CAAC,GAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACpE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAA;YAEvD,oCAAoC;YACpC,kGAAkG;YAClG,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,OAAM;YACV,CAAC;YAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;YAChF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACzB,IAAI,wBAAwB,EAAE,CAAC;oBAC3B,eAAe,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;oBACzE,eAAe,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAC7E,CAAC;qBAAM,CAAC;oBACJ,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;YAEL,CAAC;iBAAM,CAAC;gBACJ,IAAI,wBAAwB,EAAE,CAAC;oBAC3B,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;oBACxE,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAC5E,CAAC;qBAAM,CAAC;oBACJ,0CAA0C;oBAC1C,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAGD,iBAAiB,CAAC,kBAA4B;QAC1C,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAqB,CAAA;IACnH,CAAC;IAED,sBAAsB,CAAC,QAAgB;QACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,CACjE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACnF,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAC7B,CAAA;QACD,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,CAAA;IAC1C,CAAC;IAED,kBAAkB,CAAC,gBAAyB,EAAE,GAAW,EAAE,KAAoB,EAAE,SAAgB,EAAE,SAA2B,EAAE,CAAiB,EAAE,EAAa;QAC5J,IAAI,UAAU,GAAE,EAAE,CAAA;QAClB,IAAI,WAAW,GAAS,EAAE,CAAA;QAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAE1D,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3E,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;YACjC,WAAW,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACvF,CAAC;aAAM,IAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAClD,UAAU,GAAG,aAAa,CAAA;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,CAAC,CAAC,gBAAgB,EAAE,wCAAwC,CAAC,CAAA;YACnE,UAAU,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;YAC9D,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YAC9C,UAAU,GAAG,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAA;YACxC,WAAW,GAAG;gBACV,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5E,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,CAAA;YACV,IAAI,EAAE,EAAE,CAAC;gBACL,yBAAyB;gBACzB,+DAA+D;gBAC/D,MAAM,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACtI,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACT,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;gBAC9B,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAA;YAC1C,CAAC;iBAAK,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAEvE,CAAC;QAEL,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,WAAY,CAAC,CAAA;IACrC,CAAC;IAED,yBAAyB,CAAC,CAAiB,EAAE,EAAa;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAC3B,4BAA4B;QAC5B,8DAA8D;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,CAAC,GAAwB,EAAE,EAAE;YAC9D,MAAM,kBAAkB,GAAI,GAAG,CAAC,IAAI,CAAC,GAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAE,CAAA;YAE3F,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;YAEtE,IAAI,UAAU,EAAE,UAAU,CAAA;YAC1B,IAAI,cAAc,EAAE,CAAC;gBACjB,kBAAkB;gBAClB,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;gBACjD,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YACrD,CAAC;YAGD,cAAc;YACd,qCAAqC;YACrC,4DAA4D;YAC5D,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBACxB,0DAA0D;gBAC1D,4GAA4G;gBAE5G,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;gBAChE,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBAE7K,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,OAAO;wBACH,GAAG,GAAG,CAAC,IAAI;wBACX,SAAS,EAAE,aAAa;wBACxB,UAAU;wBACV,WAAW;qBACd,CAAA;gBACL,CAAC;gBAED,kCAAkC;gBAClC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBAE/K,2DAA2D;gBAC3D,OAAO,OAAO,CAAC,IAAI,CAAiB;oBAChC,GAAG,GAAG,CAAC,IAAI;oBACX,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAW,CAAC;oBAC9C,UAAU;oBACV,WAAW;iBACd,CAAC,CAAC,EAAE,CAAC;oBACF,GAAG,GAAG,CAAC,IAAI;oBACX,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAW,CAAC;oBAC9C,UAAU,EAAE,WAAW;oBACvB,WAAW,EAAE,YAAY;iBAC5B,CAAC,CAAA;YAEN,CAAC;iBAAM,CAAC;gBACJ,gCAAgC;gBAEhC,wEAAwE;gBACxE,sCAAsC;gBACtC,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,OAAO;wBACH,GAAG,GAAG,CAAC,IAAI;wBACX,QAAQ;wBACR,eAAe,EAAE,IAAI;qBACxB,CAAA;gBACL,CAAC;gBAED,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAW,CAAC,CAAA;gBAC5D,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAW,CAAC,CAAA;gBAC5D,MAAM,CAAC,cAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,4CAA4C,cAAc,IAAI,QAAQ,EAAE,CAAC,CAAA;gBAE5H,OAAO,OAAO,CAAC,IAAI,CAAiB;oBAChC,GAAG,GAAG,CAAC,IAAI;oBACX,QAAQ,EAAC,cAAe;oBACxB,eAAe,EAAE,IAAI;iBACxB,CAAC,CAAC,EAAE,CAAC;oBACF,GAAG,GAAG,CAAC,IAAI;oBACX,QAAQ,EAAC,cAAe;oBACxB,eAAe,EAAE,IAAI;iBACxB,CAAC,CAAA;YAEN,CAAC;QACL,CAAC,CAAC,CAAA;IAEN,CAAC;IAED,GAAG,CAAC,SAA6B;QAC7B,IAAI,SAAS,YAAY,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACtI,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE,yBAAyB,CAAC,CAAA;YAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;YAC7F,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,GAAG,SAAS,CAAC,GAAG,4BAA4B,CAAC,CAAA;YACtF,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAY,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACrJ,CAAC;IAEL,CAAC;CACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntityToTableMap } from "./EntityToTableMap.js";
|
|
2
|
+
export type ModifierData = {
|
|
3
|
+
orderBy?: {
|
|
4
|
+
[k: string]: 'ASC' | 'DESC';
|
|
5
|
+
};
|
|
6
|
+
limit?: number;
|
|
7
|
+
offset?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class Modifier {
|
|
10
|
+
recordName: string;
|
|
11
|
+
map: EntityToTableMap;
|
|
12
|
+
data: ModifierData;
|
|
13
|
+
fromRelation?: boolean | undefined;
|
|
14
|
+
constructor(recordName: string, map: EntityToTableMap, data: ModifierData, fromRelation?: boolean | undefined);
|
|
15
|
+
get limit(): number | undefined;
|
|
16
|
+
get offset(): number | undefined;
|
|
17
|
+
get orderBy(): {
|
|
18
|
+
attribute: string;
|
|
19
|
+
recordName: string;
|
|
20
|
+
order: "ASC" | "DESC";
|
|
21
|
+
}[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Modifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modifier.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/Modifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAC,MAAM,CAAA;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qBAAa,QAAQ;IACE,UAAU,EAAE,MAAM;IAAS,GAAG,EAAE,gBAAgB;IAAS,IAAI,EAAE,YAAY;IAAS,YAAY,CAAC,EAAE,OAAO;gBAA1G,UAAU,EAAE,MAAM,EAAS,GAAG,EAAE,gBAAgB,EAAS,IAAI,EAAE,YAAY,EAAS,YAAY,CAAC,EAAE,OAAO,YAAA;IAG7H,IAAI,KAAK,uBAER;IAED,IAAI,MAAM,uBAET;IAED,IAAI,OAAO;;;;QAQV;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class Modifier {
|
|
2
|
+
constructor(recordName, map, data, fromRelation) {
|
|
3
|
+
this.recordName = recordName;
|
|
4
|
+
this.map = map;
|
|
5
|
+
this.data = data;
|
|
6
|
+
this.fromRelation = fromRelation;
|
|
7
|
+
}
|
|
8
|
+
get limit() {
|
|
9
|
+
return this.data?.limit;
|
|
10
|
+
}
|
|
11
|
+
get offset() {
|
|
12
|
+
return this.data?.offset;
|
|
13
|
+
}
|
|
14
|
+
get orderBy() {
|
|
15
|
+
return Object.entries(this.data?.orderBy || {}).map(([k, v]) => {
|
|
16
|
+
return {
|
|
17
|
+
attribute: k,
|
|
18
|
+
recordName: this.recordName,
|
|
19
|
+
order: v
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Modifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modifier.js","sourceRoot":"","sources":["../../../src/storage/erstorage/Modifier.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,QAAQ;IACjB,YAAmB,UAAkB,EAAS,GAAqB,EAAS,IAAkB,EAAS,YAAsB;QAA1G,eAAU,GAAV,UAAU,CAAQ;QAAS,QAAG,GAAH,GAAG,CAAkB;QAAS,SAAI,GAAJ,IAAI,CAAc;QAAS,iBAAY,GAAZ,YAAY,CAAU;IAC7H,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAA;IAC3B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAA;IAC5B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3D,OAAO;gBACH,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,CAAC;aACX,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EntityToTableMap } from "./EntityToTableMap.js";
|
|
2
|
+
import { AttributeInfo } from "./AttributeInfo.js";
|
|
3
|
+
import { Record } from "./RecordQueryAgent.js";
|
|
4
|
+
export type RawEntityData = {
|
|
5
|
+
[k: string]: any;
|
|
6
|
+
};
|
|
7
|
+
export declare class NewRecordData {
|
|
8
|
+
map: EntityToTableMap;
|
|
9
|
+
recordName: string;
|
|
10
|
+
rawData: RawEntityData;
|
|
11
|
+
info?: AttributeInfo | undefined;
|
|
12
|
+
mergedLinkTargetNewRecords: NewRecordData[];
|
|
13
|
+
mergedLinkTargetRecordIdRefs: NewRecordData[];
|
|
14
|
+
mergedLinkTargetNullRecords: NewRecordData[];
|
|
15
|
+
linkRecordData?: NewRecordData;
|
|
16
|
+
combinedNewRecords: NewRecordData[];
|
|
17
|
+
combinedRecordIdRefs: NewRecordData[];
|
|
18
|
+
combinedNullRecords: NewRecordData[];
|
|
19
|
+
differentTableMergedLinkNewRecords: NewRecordData[];
|
|
20
|
+
differentTableMergedLinkRecordIdRefs: NewRecordData[];
|
|
21
|
+
differentTableMergedLinkNullRecords: NewRecordData[];
|
|
22
|
+
isolatedNewRecords: NewRecordData[];
|
|
23
|
+
isolatedRecordIdRefs: NewRecordData[];
|
|
24
|
+
isolatedNullRecords: NewRecordData[];
|
|
25
|
+
entityIdAttributes: AttributeInfo[];
|
|
26
|
+
relatedEntitiesData: NewRecordData[];
|
|
27
|
+
valueAttributes: AttributeInfo[];
|
|
28
|
+
sameRowEntityIdRefs: NewRecordData[];
|
|
29
|
+
constructor(map: EntityToTableMap, recordName: string, rawData: RawEntityData, info?: AttributeInfo | undefined);
|
|
30
|
+
merge(partialNewRawData: RawEntityData): NewRecordData;
|
|
31
|
+
getRef(): {
|
|
32
|
+
id: any;
|
|
33
|
+
};
|
|
34
|
+
isRef(): boolean;
|
|
35
|
+
isNull(): boolean;
|
|
36
|
+
getData(): Record;
|
|
37
|
+
getSameRowFieldAndValue(oldRecord?: Omit<Record, 'id'>): {
|
|
38
|
+
field: string;
|
|
39
|
+
value: any;
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=NewRecordData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewRecordData.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/NewRecordData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAG7C,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAEhD,qBAAa,aAAa;IAgCH,GAAG,EAAE,gBAAgB;IAAS,UAAU,EAAE,MAAM;IAAS,OAAO,EAAE,aAAa;IAAS,IAAI,CAAC,EAAE,aAAa;IA9BxH,0BAA0B,EAAE,aAAa,EAAE,CAAK;IAEhD,4BAA4B,EAAE,aAAa,EAAE,CAAK;IAElD,2BAA2B,EAAE,aAAa,EAAE,CAAK;IAEjD,cAAc,CAAC,EAAE,aAAa,CAAA;IAE9B,kBAAkB,EAAG,aAAa,EAAE,CAAK;IAEzC,oBAAoB,EAAG,aAAa,EAAE,CAAK;IAE3C,mBAAmB,EAAE,aAAa,EAAE,CAAK;IAEzC,kCAAkC,EAAE,aAAa,EAAE,CAAK;IACxD,oCAAoC,EAAE,aAAa,EAAE,CAAK;IAC1D,mCAAmC,EAAE,aAAa,EAAE,CAAK;IAEzD,kBAAkB,EAAE,aAAa,EAAE,CAAK;IACxC,oBAAoB,EAAE,aAAa,EAAE,CAAK;IAC1C,mBAAmB,EAAE,aAAa,EAAE,CAAK;IAEzC,kBAAkB,EAAE,aAAa,EAAE,CAAK;IAExC,mBAAmB,EAAE,aAAa,EAAE,CAAK;IACzC,eAAe,EAAE,aAAa,EAAE,CAAK;IAGrC,mBAAmB,EAAE,aAAa,EAAE,CAAK;gBAE7B,GAAG,EAAE,gBAAgB,EAAS,UAAU,EAAE,MAAM,EAAS,OAAO,EAAE,aAAa,EAAS,IAAI,CAAC,EAAE,aAAa,YAAA;IAsE/H,KAAK,CAAC,iBAAiB,EAAE,aAAa;IAUtC,MAAM;;;IAKN,KAAK;IAIL,MAAM;IAGN,OAAO,IAAK,MAAM;IAIlB,uBAAuB,CAAC,SAAS,GAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAM,GAAI;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,GAAG,CAAA;KAAC,EAAE;CA+D5F"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { flatten } from "./util.js";
|
|
2
|
+
import { LINK_SYMBOL } from "./RecordQuery.js";
|
|
3
|
+
export class NewRecordData {
|
|
4
|
+
// recordName 是自己的 recordName, info 是自己作为父亲的 attribute 的 info.
|
|
5
|
+
constructor(map, recordName, rawData, info) {
|
|
6
|
+
this.map = map;
|
|
7
|
+
this.recordName = recordName;
|
|
8
|
+
this.rawData = rawData;
|
|
9
|
+
this.info = info;
|
|
10
|
+
// 关系往自身合并的异表新 record
|
|
11
|
+
this.mergedLinkTargetNewRecords = [];
|
|
12
|
+
// 关系往自身合并的异表老 record
|
|
13
|
+
this.mergedLinkTargetRecordIdRefs = [];
|
|
14
|
+
// 关系往自身合并的异表 null 值
|
|
15
|
+
this.mergedLinkTargetNullRecords = [];
|
|
16
|
+
// 三表合一的 record
|
|
17
|
+
this.combinedNewRecords = [];
|
|
18
|
+
// 三表合一的老 record
|
|
19
|
+
this.combinedRecordIdRefs = [];
|
|
20
|
+
// 三表合一的 null 值
|
|
21
|
+
this.combinedNullRecords = [];
|
|
22
|
+
// 往属性方向合并的异表 record
|
|
23
|
+
this.differentTableMergedLinkNewRecords = [];
|
|
24
|
+
this.differentTableMergedLinkRecordIdRefs = [];
|
|
25
|
+
this.differentTableMergedLinkNullRecords = [];
|
|
26
|
+
// 完全关系独立的数据
|
|
27
|
+
this.isolatedNewRecords = [];
|
|
28
|
+
this.isolatedRecordIdRefs = [];
|
|
29
|
+
this.isolatedNullRecords = [];
|
|
30
|
+
// 当时 linkRecord 的时候,source/target 就可能出现在下面
|
|
31
|
+
this.entityIdAttributes = [];
|
|
32
|
+
// 不包括虚拟 link
|
|
33
|
+
this.relatedEntitiesData = [];
|
|
34
|
+
this.valueAttributes = [];
|
|
35
|
+
// 和当前合表并且是 id 的。说明我们的需要的 row 已经有了,只要update 相应 column 就行了
|
|
36
|
+
this.sameRowEntityIdRefs = [];
|
|
37
|
+
const [valueAttributesInfo, entityAttributesInfo, entityIdAttributes] = this.map.groupAttributes(recordName, rawData ? Object.keys(rawData) : []);
|
|
38
|
+
this.relatedEntitiesData = flatten(entityAttributesInfo.map(info => Array.isArray(rawData[info.attributeName]) ?
|
|
39
|
+
rawData[info.attributeName].map((i) => new NewRecordData(this.map, info.recordName, i, info)) :
|
|
40
|
+
new NewRecordData(this.map, info.recordName, rawData[info.attributeName], info)));
|
|
41
|
+
this.valueAttributes = valueAttributesInfo;
|
|
42
|
+
this.entityIdAttributes = entityIdAttributes;
|
|
43
|
+
// TODO 要把那些独立出去的 field 排除出去。
|
|
44
|
+
this.relatedEntitiesData.forEach(newRelatedEntityData => {
|
|
45
|
+
// CAUTION 三表合一的情况(需要排除掉关系的 source、target 是同一实体的情况,这种情况下不算合表)
|
|
46
|
+
if (newRelatedEntityData.info.isMergedWithParent()) {
|
|
47
|
+
// 三表合一的情况。记录合表的数据到底是有 id ,还是新的。如果是有 id ,说明是要 update 某一行。
|
|
48
|
+
if (newRelatedEntityData.isNull()) {
|
|
49
|
+
this.combinedNullRecords.push(newRelatedEntityData);
|
|
50
|
+
}
|
|
51
|
+
else if (newRelatedEntityData.isRef()) {
|
|
52
|
+
this.combinedRecordIdRefs.push(newRelatedEntityData);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// 全新的同表的数据
|
|
56
|
+
this.combinedNewRecords.push(newRelatedEntityData);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// FIXME relatedEntitiesData 是不是要限制下,只允许那些自己能管的。
|
|
61
|
+
// 因为 source/target 这样的合并之后就不规自己管了。这里也不应该处理。
|
|
62
|
+
if (newRelatedEntityData.info.isLinkMergedWithParent()) {
|
|
63
|
+
if (newRelatedEntityData.isNull()) {
|
|
64
|
+
this.mergedLinkTargetNullRecords.push(newRelatedEntityData);
|
|
65
|
+
}
|
|
66
|
+
else if (newRelatedEntityData.isRef()) {
|
|
67
|
+
this.mergedLinkTargetRecordIdRefs.push(newRelatedEntityData);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.mergedLinkTargetNewRecords.push(newRelatedEntityData);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (newRelatedEntityData.info.isLinkMergedWithAttribute()) {
|
|
74
|
+
// 关系往属性方向合并的
|
|
75
|
+
if (newRelatedEntityData.isNull()) {
|
|
76
|
+
this.differentTableMergedLinkNullRecords.push(newRelatedEntityData);
|
|
77
|
+
}
|
|
78
|
+
else if (newRelatedEntityData.isRef()) {
|
|
79
|
+
this.differentTableMergedLinkRecordIdRefs.push(newRelatedEntityData);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.differentTableMergedLinkNewRecords.push(newRelatedEntityData);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// 关系完全独立的
|
|
87
|
+
if (newRelatedEntityData.isNull()) {
|
|
88
|
+
this.isolatedNullRecords.push(newRelatedEntityData);
|
|
89
|
+
}
|
|
90
|
+
else if (newRelatedEntityData.isRef()) {
|
|
91
|
+
this.isolatedRecordIdRefs.push(newRelatedEntityData);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.isolatedNewRecords.push(newRelatedEntityData);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
if (this.rawData?.[LINK_SYMBOL]) {
|
|
100
|
+
this.linkRecordData = new NewRecordData(this.map, info?.linkName, this.rawData[LINK_SYMBOL]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
merge(partialNewRawData) {
|
|
104
|
+
return new NewRecordData(this.map, this.recordName, { ...this.rawData, ...partialNewRawData }, this.info);
|
|
105
|
+
}
|
|
106
|
+
// exclude(attributeNames: string[]) {
|
|
107
|
+
// const newRawData = {...this.rawData}
|
|
108
|
+
// attributeNames.forEach(name => delete newRawData[name])
|
|
109
|
+
// return new NewEntityData(this.map, this.recordName, newRawData, this.info)
|
|
110
|
+
// }
|
|
111
|
+
getRef() {
|
|
112
|
+
return { id: this.rawData.id };
|
|
113
|
+
}
|
|
114
|
+
isRef() {
|
|
115
|
+
return this.rawData?.id !== undefined;
|
|
116
|
+
}
|
|
117
|
+
isNull() {
|
|
118
|
+
return this.rawData === null;
|
|
119
|
+
}
|
|
120
|
+
getData() {
|
|
121
|
+
return { ...this.rawData };
|
|
122
|
+
}
|
|
123
|
+
getSameRowFieldAndValue(oldRecord = {}) {
|
|
124
|
+
const newRecord = { ...oldRecord, ...this.rawData };
|
|
125
|
+
const result = this.valueAttributes.map((info) => {
|
|
126
|
+
const value = info.isComputed ? info.computed({ ...this.rawData, ...oldRecord }) : this.rawData[info.attributeName];
|
|
127
|
+
return {
|
|
128
|
+
field: info.field,
|
|
129
|
+
value
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
// CAUTION 因为我们没有标记 computed 依赖于哪些字段,所以任何字段的变化这里都要把 computed attribute 重新计算一遍。
|
|
133
|
+
// CAUTION 只有更新自己的字段和递归更新三表合一的字段是需要岛上 oldRecord 的。因为我们只允许递归更新三表合一的 record。
|
|
134
|
+
const recordInfo = this.map.getRecordInfo(this.recordName);
|
|
135
|
+
recordInfo.valueAttributes.forEach(info => {
|
|
136
|
+
if (info.isComputed) {
|
|
137
|
+
const newValue = info.computed(newRecord);
|
|
138
|
+
if (newValue !== oldRecord[info.attributeName]) {
|
|
139
|
+
result.push({
|
|
140
|
+
field: info.field,
|
|
141
|
+
value: newValue
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
// source/target 里面记录的 id
|
|
147
|
+
this.entityIdAttributes.forEach(info => {
|
|
148
|
+
result.push({
|
|
149
|
+
field: info.linkField,
|
|
150
|
+
value: this.rawData[info.attributeName].id
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
// 往自己合表的关系上的 id 以及关系数据
|
|
154
|
+
this.mergedLinkTargetRecordIdRefs.forEach(recordData => {
|
|
155
|
+
result.push({
|
|
156
|
+
field: recordData.info?.linkField,
|
|
157
|
+
value: recordData.getRef().id
|
|
158
|
+
});
|
|
159
|
+
if (recordData.linkRecordData) {
|
|
160
|
+
result.push(...recordData.linkRecordData.getSameRowFieldAndValue());
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// 有 info 说明自己是派生出来的,上层可能在创建的时候通过 & 字段来指定了要创建的关系的 attribute。
|
|
164
|
+
if (this.info && this.linkRecordData && this.info.isLinkMergedWithAttribute()) {
|
|
165
|
+
result.push(...this.linkRecordData.getSameRowFieldAndValue());
|
|
166
|
+
}
|
|
167
|
+
// 三表合一的数据
|
|
168
|
+
this.combinedNewRecords.concat(this.combinedRecordIdRefs).forEach(combinedNewRecord => {
|
|
169
|
+
result.push(...combinedNewRecord.getSameRowFieldAndValue(oldRecord[combinedNewRecord.info?.attributeName]));
|
|
170
|
+
if (combinedNewRecord.linkRecordData) {
|
|
171
|
+
// CAUTION 外部 updateRecord 声明了只有三表合一的数据允许递归更新。所以也要带上 oldRecord,因为 related record 能也有 computed attribute。
|
|
172
|
+
result.push(...combinedNewRecord.linkRecordData.getSameRowFieldAndValue(oldRecord[combinedNewRecord.info?.attributeName]?.[LINK_SYMBOL]));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=NewRecordData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewRecordData.js","sourceRoot":"","sources":["../../../src/storage/erstorage/NewRecordData.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAI7C,MAAM,OAAO,aAAa;IA+BtB,+DAA+D;IAC/D,YAAmB,GAAqB,EAAS,UAAkB,EAAS,OAAsB,EAAS,IAAoB;QAA5G,QAAG,GAAH,GAAG,CAAkB;QAAS,eAAU,GAAV,UAAU,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAe;QAAS,SAAI,GAAJ,IAAI,CAAgB;QA/B/H,qBAAqB;QACd,+BAA0B,GAAoB,EAAE,CAAA;QACvD,qBAAqB;QACd,iCAA4B,GAAoB,EAAE,CAAA;QACzD,oBAAoB;QACb,gCAA2B,GAAoB,EAAE,CAAA;QAGxD,eAAe;QACR,uBAAkB,GAAqB,EAAE,CAAA;QAChD,gBAAgB;QACT,yBAAoB,GAAqB,EAAE,CAAA;QAClD,eAAe;QACR,wBAAmB,GAAoB,EAAE,CAAA;QAChD,oBAAoB;QACb,uCAAkC,GAAoB,EAAE,CAAA;QACxD,yCAAoC,GAAoB,EAAE,CAAA;QAC1D,wCAAmC,GAAoB,EAAE,CAAA;QAChE,YAAY;QACL,uBAAkB,GAAoB,EAAE,CAAA;QACxC,yBAAoB,GAAoB,EAAE,CAAA;QAC1C,wBAAmB,GAAoB,EAAE,CAAA;QAChD,2CAA2C;QACpC,uBAAkB,GAAoB,EAAE,CAAA;QAC/C,aAAa;QACN,wBAAmB,GAAoB,EAAE,CAAA;QACzC,oBAAe,GAAoB,EAAE,CAAA;QAE5C,0DAA0D;QACnD,wBAAmB,GAAoB,EAAE,CAAA;QAG5C,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACjJ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC/D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA,CAAC;YAC7G,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CACtF,CAAC,CAAA;QAEF,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAA;QAC1C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAE5C,6BAA6B;QAC7B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;YACpD,6DAA6D;YAC7D,IAAI,oBAAoB,CAAC,IAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAClD,0DAA0D;gBAC1D,IAAI,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;oBAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;gBACvD,CAAC;qBAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;oBACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;gBACxD,CAAC;qBAAM,CAAC;oBACJ,WAAW;oBACX,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;gBACtD,CAAC;YAEL,CAAC;iBAAM,CAAC;gBAEJ,gDAAgD;gBAChD,6CAA6C;gBAC7C,IAAI,oBAAoB,CAAC,IAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC;oBACtD,IAAI,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;wBAChC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBAC/D,CAAC;yBAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBAChE,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBAC9D,CAAC;gBAEL,CAAC;qBAAM,IAAG,oBAAoB,CAAC,IAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC;oBAC/D,aAAa;oBACb,IAAI,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;wBAChC,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACvE,CAAC;yBAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACxE,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACtE,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,UAAU;oBACV,IAAI,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACvD,CAAC;yBAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACxD,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACtD,CAAC;gBAEL,CAAC;YAGL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QACjG,CAAC;IAEL,CAAC;IAGD,KAAK,CAAC,iBAAgC;QAClC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,EAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,EAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3G,CAAC;IAED,sCAAsC;IACtC,2CAA2C;IAC3C,8DAA8D;IAC9D,iFAAiF;IACjF,IAAI;IAEJ,MAAM;QACF,OAAO,EAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAC,CAAA;IAChC,CAAC;IAGD,KAAK;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,SAAS,CAAA;IACzC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAA;IAChC,CAAC;IACD,OAAO;QACH,OAAO,EAAC,GAAG,IAAI,CAAC,OAAO,EAAW,CAAA;IACtC,CAAC;IAED,uBAAuB,CAAC,YAAgC,EAAE;QAEtD,MAAM,SAAS,GAAG,EAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,EAAC,CAAA;QAEjD,MAAM,MAAM,GAAgC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAS,CAAC,EAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAClH,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,KAAM;gBAClB,KAAK;aACR,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,8EAA8E;QAC9E,0EAA0E;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1D,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,CAAA;gBAC1C,IAAI,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC;wBACR,KAAK,EAAE,IAAI,CAAC,KAAM;wBAClB,KAAK,EAAE,QAAQ;qBAClB,CAAC,CAAA;gBACN,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,yBAAyB;QACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC;gBACR,KAAK,EAAC,IAAI,CAAC,SAAU;gBACrB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;aAC7C,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,uBAAuB;QACvB,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,SAAU;gBAClC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;aAChC,CAAC,CAAA;YAEF,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC,CAAA;YACvE,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,4DAA4D;QAC5D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,UAAU;QACV,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAClF,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAc,CAAC,CAAC,CAAC,CAAA;YAC5G,IAAI,iBAAiB,CAAC,cAAc,EAAE,CAAC;gBACnC,wGAAwG;gBACxG,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAc,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YAC9I,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AttributeInfo } from "./AttributeInfo.js";
|
|
2
|
+
import { EntityToTableMap, RecordMapItem } from "./EntityToTableMap.js";
|
|
3
|
+
export declare class RecordInfo {
|
|
4
|
+
name: string;
|
|
5
|
+
map: EntityToTableMap;
|
|
6
|
+
data: RecordMapItem;
|
|
7
|
+
constructor(name: string, map: EntityToTableMap);
|
|
8
|
+
get isRelation(): boolean | undefined;
|
|
9
|
+
get combinedRecords(): AttributeInfo[];
|
|
10
|
+
get table(): string;
|
|
11
|
+
get idField(): string | undefined;
|
|
12
|
+
get JSONFields(): string[];
|
|
13
|
+
get sameRowFields(): string[];
|
|
14
|
+
get mergedRecordAttributes(): AttributeInfo[];
|
|
15
|
+
get allFields(): string[];
|
|
16
|
+
get managedRecordAttributes(): AttributeInfo[];
|
|
17
|
+
get strictRecordAttributes(): AttributeInfo[];
|
|
18
|
+
get differentTableRecordAttributes(): AttributeInfo[];
|
|
19
|
+
get reliance(): AttributeInfo[];
|
|
20
|
+
get notRelianceCombined(): AttributeInfo[];
|
|
21
|
+
get differentTableReliance(): AttributeInfo[];
|
|
22
|
+
get sameTableReliance(): AttributeInfo[];
|
|
23
|
+
get valueAttributes(): AttributeInfo[];
|
|
24
|
+
getAttributeInfo(attribute: string): AttributeInfo;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=RecordInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordInfo.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,gBAAgB,EAAmB,aAAa,EAAiB,MAAM,uBAAuB,CAAC;AAEvG,qBAAa,UAAU;IAGA,IAAI,EAAE,MAAM;IAAS,GAAG,EAAE,gBAAgB;IAF7D,IAAI,EAAE,aAAa,CAAA;gBAEA,IAAI,EAAE,MAAM,EAAS,GAAG,EAAE,gBAAgB;IAI7D,IAAI,UAAU,wBAEb;IAED,IAAI,eAAe,oBAIlB;IAED,IAAI,KAAK,WAER;IAED,IAAI,OAAO,uBAEV;IAED,IAAI,UAAU,aAIb;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAsB5B;IACD,IAAI,sBAAsB,oBAIzB;IACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAGD,IAAI,uBAAuB,oBAO1B;IAED,IAAI,sBAAsB,oBAQzB;IACD,IAAI,8BAA8B,oBAMjC;IAGD,IAAI,QAAQ,IAAI,aAAa,EAAE,CAM9B;IAED,IAAI,mBAAmB,IAAI,aAAa,EAAE,CAIzC;IAED,IAAI,sBAAsB,IAAI,aAAa,EAAE,CAI5C;IAED,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAIvC;IAED,IAAI,eAAe,oBAMlB;IAED,gBAAgB,CAAC,SAAS,EAAE,MAAM;CAGrC"}
|