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,147 @@
|
|
|
1
|
+
import { assert } from "../utils.js";
|
|
2
|
+
export class AttributeInfo {
|
|
3
|
+
constructor(parentEntityName, attributeName, map, symmetricDirection) {
|
|
4
|
+
this.parentEntityName = parentEntityName;
|
|
5
|
+
this.attributeName = attributeName;
|
|
6
|
+
this.map = map;
|
|
7
|
+
this.symmetricDirection = symmetricDirection;
|
|
8
|
+
this.data = this.map.getAttributeData(parentEntityName, attributeName);
|
|
9
|
+
assert(!!this.data, `${parentEntityName} has no attribute: ${attributeName}`);
|
|
10
|
+
}
|
|
11
|
+
get isRecord() {
|
|
12
|
+
return this.data.isRecord;
|
|
13
|
+
}
|
|
14
|
+
get isValue() {
|
|
15
|
+
return !this.data.isRecord;
|
|
16
|
+
}
|
|
17
|
+
get isCollection() {
|
|
18
|
+
return this.isValue && this.data.collection;
|
|
19
|
+
}
|
|
20
|
+
get isComputed() {
|
|
21
|
+
return this.isValue && this.data.computed;
|
|
22
|
+
}
|
|
23
|
+
get fieldType() {
|
|
24
|
+
if (this.isRecord)
|
|
25
|
+
throw new Error('not a value attribute');
|
|
26
|
+
return this.data.fieldType;
|
|
27
|
+
}
|
|
28
|
+
get computed() {
|
|
29
|
+
if (!this.isComputed)
|
|
30
|
+
throw new Error('not a computed attribute');
|
|
31
|
+
return this.data.computed;
|
|
32
|
+
}
|
|
33
|
+
get isManyToOne() {
|
|
34
|
+
if (!this.isRecord)
|
|
35
|
+
throw new Error('not a entity');
|
|
36
|
+
const data = this.data;
|
|
37
|
+
return data.relType[0] === 'n' && data.relType[1] === '1';
|
|
38
|
+
}
|
|
39
|
+
get isManyToMany() {
|
|
40
|
+
if (!this.isRecord)
|
|
41
|
+
throw new Error('not a entity');
|
|
42
|
+
const data = this.data;
|
|
43
|
+
return data.relType[0] === 'n' && data.relType[1] === 'n';
|
|
44
|
+
}
|
|
45
|
+
get isOneToOne() {
|
|
46
|
+
if (!this.isRecord)
|
|
47
|
+
throw new Error('not a entity');
|
|
48
|
+
const data = this.data;
|
|
49
|
+
return data.relType[0] === '1' && data.relType[1] === '1';
|
|
50
|
+
}
|
|
51
|
+
get isOneToMany() {
|
|
52
|
+
if (!this.isRecord)
|
|
53
|
+
throw new Error('not a entity');
|
|
54
|
+
const data = this.data;
|
|
55
|
+
return data.relType[0] === '1' && data.relType[1] === 'n';
|
|
56
|
+
}
|
|
57
|
+
get isXToOne() {
|
|
58
|
+
return this.isManyToOne || this.isOneToOne;
|
|
59
|
+
}
|
|
60
|
+
get isOneToX() {
|
|
61
|
+
return this.isOneToMany || this.isOneToOne;
|
|
62
|
+
}
|
|
63
|
+
get isXToMany() {
|
|
64
|
+
return this.isManyToMany || this.isOneToMany;
|
|
65
|
+
}
|
|
66
|
+
get isReliance() {
|
|
67
|
+
return this.data.isReliance;
|
|
68
|
+
}
|
|
69
|
+
get recordName() {
|
|
70
|
+
assert(this.isRecord, `${this.attributeName} is not a entity`);
|
|
71
|
+
return this.data.recordName;
|
|
72
|
+
}
|
|
73
|
+
get table() {
|
|
74
|
+
assert(this.isRecord, `${this.attributeName} is not a entity`);
|
|
75
|
+
return this.map.getRecord(this.data.recordName).table;
|
|
76
|
+
}
|
|
77
|
+
// FIXME 改好
|
|
78
|
+
get field() {
|
|
79
|
+
if (this.isValue) {
|
|
80
|
+
return this.data.field;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (this.isManyToOne && this.isLinkMergedWithParent()) {
|
|
84
|
+
if (this.data.field)
|
|
85
|
+
return this.data.field;
|
|
86
|
+
const linkInfoRecord = this.getLinkInfo().record;
|
|
87
|
+
return this.isRecordSource() ? linkInfoRecord.attributes.target.field : linkInfoRecord.attributes.source.field;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
get linkField() {
|
|
92
|
+
if (this.isRecord && this.isLinkMergedWithParent()) {
|
|
93
|
+
// 如果parent 是 linkRecord, source/target 这样的 field 就是 attribute 上面在管。
|
|
94
|
+
if (this.data.field)
|
|
95
|
+
return this.data.field;
|
|
96
|
+
const linkInfoRecord = this.getLinkInfo().record;
|
|
97
|
+
return this.isRecordSource() ? linkInfoRecord?.attributes.target.field : linkInfoRecord?.attributes.source.field;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
get linkName() {
|
|
101
|
+
return this.data.linkName;
|
|
102
|
+
}
|
|
103
|
+
isMergedWithParent() {
|
|
104
|
+
return this.getLinkInfo().isCombined();
|
|
105
|
+
}
|
|
106
|
+
isLinkMergedWithParent() {
|
|
107
|
+
const linkInfo = this.getLinkInfo();
|
|
108
|
+
return linkInfo.isRelationSource(this.parentEntityName, this.attributeName) ? linkInfo.isMergedToSource() : linkInfo.isMergedToTarget();
|
|
109
|
+
}
|
|
110
|
+
isLinkMergedWithAttribute() {
|
|
111
|
+
const linkInfo = this.getLinkInfo();
|
|
112
|
+
return linkInfo.isRelationSource(this.parentEntityName, this.attributeName) ? linkInfo.isMergedToTarget() : linkInfo.isMergedToSource();
|
|
113
|
+
}
|
|
114
|
+
isLinkIsolated() {
|
|
115
|
+
const linkInfo = this.getLinkInfo();
|
|
116
|
+
return linkInfo.isIsolated();
|
|
117
|
+
}
|
|
118
|
+
isRecordSource() {
|
|
119
|
+
return this.getLinkInfo().isRelationSource(this.parentEntityName, this.attributeName);
|
|
120
|
+
}
|
|
121
|
+
isLinkManyToManySymmetric() {
|
|
122
|
+
const linkInfo = this.getLinkInfo();
|
|
123
|
+
return linkInfo.isManyToMany && linkInfo.isSymmetric();
|
|
124
|
+
}
|
|
125
|
+
isLinkSourceRelation() {
|
|
126
|
+
const linkInfo = this.getLinkInfo();
|
|
127
|
+
return linkInfo.isSourceRelation();
|
|
128
|
+
}
|
|
129
|
+
getReverseInfo() {
|
|
130
|
+
const reverseAttribute = this.map.getReverseAttribute(this.parentEntityName, this.attributeName);
|
|
131
|
+
if (!reverseAttribute)
|
|
132
|
+
return undefined;
|
|
133
|
+
return this.map.getInfo(this.recordName, reverseAttribute);
|
|
134
|
+
}
|
|
135
|
+
getLinkInfo() {
|
|
136
|
+
assert(this.isRecord, `only record attribute can get linkInfo`);
|
|
137
|
+
return this.map.getLinkInfo(this.parentEntityName, this.attributeName);
|
|
138
|
+
}
|
|
139
|
+
getRecordInfo() {
|
|
140
|
+
assert(this.isRecord, `only record attribute can get linkInfo`);
|
|
141
|
+
return this.map.getRecordInfo(this.recordName);
|
|
142
|
+
}
|
|
143
|
+
getAttribute(name) {
|
|
144
|
+
return this.map.getInfo(this.recordName, name);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=AttributeInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeInfo.js","sourceRoot":"","sources":["../../../src/storage/erstorage/AttributeInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EntityToTableMap } from "./EntityToTableMap.js";
|
|
2
|
+
import { RecordQuery, RecordQueryData, RecordQueryTree } from "./RecordQuery.js";
|
|
3
|
+
export type AttributeQueryDataRecordItem = [string, RecordQueryData, boolean?];
|
|
4
|
+
export type AttributeQueryDataItem = string | AttributeQueryDataRecordItem;
|
|
5
|
+
export type AttributeQueryData = AttributeQueryDataItem[];
|
|
6
|
+
export declare class AttributeQuery {
|
|
7
|
+
recordName: string;
|
|
8
|
+
map: EntityToTableMap;
|
|
9
|
+
data: AttributeQueryData;
|
|
10
|
+
parentRecord?: string | undefined;
|
|
11
|
+
attributeName?: string | undefined;
|
|
12
|
+
shouldQueryParentLinkData?: boolean | undefined;
|
|
13
|
+
relatedRecords: RecordQuery[];
|
|
14
|
+
xToManyRecords: RecordQuery[];
|
|
15
|
+
xToOneRecords: RecordQuery[];
|
|
16
|
+
valueAttributes: string[];
|
|
17
|
+
fullQueryTree: RecordQueryTree;
|
|
18
|
+
parentLinkRecordQuery?: RecordQuery;
|
|
19
|
+
id: number;
|
|
20
|
+
static getAttributeQueryDataForRecord(recordName: string, map: EntityToTableMap, includeSameTableReliance?: boolean, includeMergedRecordAttribute?: boolean, includeManagedRecordAttributes?: boolean, // link record 的 source/target 字段
|
|
21
|
+
includeNotRelianceCombined?: boolean): AttributeQueryData;
|
|
22
|
+
constructor(recordName: string, map: EntityToTableMap, data?: AttributeQueryData, parentRecord?: string | undefined, attributeName?: string | undefined, shouldQueryParentLinkData?: boolean | undefined);
|
|
23
|
+
getValueAndXToOneRecordFields(nameContext?: string[]): {
|
|
24
|
+
tableAliasAndField: [string, string];
|
|
25
|
+
nameContext: string[];
|
|
26
|
+
attribute: string;
|
|
27
|
+
}[];
|
|
28
|
+
get xToOneQueryTree(): RecordQueryTree;
|
|
29
|
+
buildXToOneQueryTree(): RecordQueryTree;
|
|
30
|
+
buildFullQueryTree(): RecordQueryTree;
|
|
31
|
+
withParentLinkData(): AttributeQuery;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=AttributeQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeQuery.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/AttributeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAA+B,WAAW,EAAE,eAAe,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE7G,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9E,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,4BAA4B,CAAA;AAC1E,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,EAAE,CAAA;AAEzD,qBAAa,cAAc;IAmGJ,UAAU,EAAE,MAAM;IAAS,GAAG,EAAE,gBAAgB;IAAS,IAAI,EAAE,kBAAkB;IAAc,YAAY,CAAC,EAAE,MAAM;IAAS,aAAa,CAAC,EAAE,MAAM;IAAS,yBAAyB,CAAC,EAAE,OAAO;IAlG3M,cAAc,EAAE,WAAW,EAAE,CAAK;IAClC,cAAc,EAAE,WAAW,EAAE,CAAK;IAClC,aAAa,EAAE,WAAW,EAAE,CAAK;IACjC,eAAe,EAAE,MAAM,EAAE,CAAK;IAE9B,aAAa,EAAE,eAAe,CAAA;IAC9B,qBAAqB,CAAC,EAAE,WAAW,CAAA;IACnC,EAAE,SAAgB;WACX,8BAA8B,CACxC,UAAU,EAAC,MAAM,EAAE,GAAG,EAAE,gBAAgB,EACxC,wBAAwB,UAAQ,EAChC,4BAA4B,UAAQ,EACpC,8BAA8B,UAAQ,EAAE,iCAAiC;IACzE,0BAA0B,GAAE,OAAe,GAC5C,kBAAkB;gBAoFF,UAAU,EAAE,MAAM,EAAS,GAAG,EAAE,gBAAgB,EAAS,IAAI,GAAE,kBAAuB,EAAS,YAAY,CAAC,EAAE,MAAM,YAAA,EAAS,aAAa,CAAC,EAAE,MAAM,YAAA,EAAS,yBAAyB,CAAC,EAAE,OAAO,YAAA;IA0ClN,6BAA6B,CAAC,WAAW,WAAoB,GAAG;QAAE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE;IA0CpJ,IAAW,eAAe,IAAI,eAAe,CAE5C;IACD,oBAAoB;IA2BpB,kBAAkB;IAQlB,kBAAkB;CAKrB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { assert } from "../utils.js";
|
|
2
|
+
import { ALL_ATTR_SYMBOL, LINK_SYMBOL, RecordQuery, RecordQueryTree } from "./RecordQuery.js";
|
|
3
|
+
export class AttributeQuery {
|
|
4
|
+
static getAttributeQueryDataForRecord(recordName, map, includeSameTableReliance = false, includeMergedRecordAttribute = false, includeManagedRecordAttributes = false, // link record 的 source/target 字段
|
|
5
|
+
includeNotRelianceCombined = false) {
|
|
6
|
+
const result = map.getRecordInfo(recordName).valueAttributes.map(info => info.attributeName);
|
|
7
|
+
const recordInfo = map.getRecordInfo(recordName);
|
|
8
|
+
// FIXME 再想想以下几个参数的递归查询,特别是关系上的数据。
|
|
9
|
+
if (includeSameTableReliance) {
|
|
10
|
+
recordInfo.sameTableReliance.forEach(info => {
|
|
11
|
+
const relianceAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.recordName, map, true, includeMergedRecordAttribute);
|
|
12
|
+
const attributeQueryItem = [
|
|
13
|
+
info.attributeName,
|
|
14
|
+
{
|
|
15
|
+
attributeQuery: [...relianceAttributeQueryData]
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
if (!recordInfo.isRelation) {
|
|
19
|
+
const relianceRelationAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.linkName, map, true, includeMergedRecordAttribute);
|
|
20
|
+
attributeQueryItem[1].attributeQuery.push([LINK_SYMBOL, { attributeQuery: relianceRelationAttributeQueryData }]);
|
|
21
|
+
}
|
|
22
|
+
result.push(attributeQueryItem);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
if (includeNotRelianceCombined) {
|
|
26
|
+
recordInfo.notRelianceCombined.forEach(info => {
|
|
27
|
+
// const relianceAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.recordName, map, true, includeMergedRecordAttribute, true)
|
|
28
|
+
// const relianceRelationAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.linkName, map, true, includeMergedRecordAttribute, true)
|
|
29
|
+
// result.push(
|
|
30
|
+
// [
|
|
31
|
+
// info.attributeName,
|
|
32
|
+
// {
|
|
33
|
+
// attributeQuery: [...relianceAttributeQueryData, [LINK_SYMBOL, { attributeQuery: relianceRelationAttributeQueryData }]]
|
|
34
|
+
// }
|
|
35
|
+
// ]
|
|
36
|
+
// )
|
|
37
|
+
const relianceAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.recordName, map, true, includeMergedRecordAttribute);
|
|
38
|
+
const attributeQueryItem = [
|
|
39
|
+
info.attributeName,
|
|
40
|
+
{
|
|
41
|
+
attributeQuery: [...relianceAttributeQueryData]
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
if (!recordInfo.isRelation) {
|
|
45
|
+
const relianceRelationAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.linkName, map, true, includeMergedRecordAttribute);
|
|
46
|
+
attributeQueryItem[1].attributeQuery.push([LINK_SYMBOL, { attributeQuery: relianceRelationAttributeQueryData }]);
|
|
47
|
+
}
|
|
48
|
+
result.push(attributeQueryItem);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (includeMergedRecordAttribute) {
|
|
52
|
+
recordInfo.mergedRecordAttributes.forEach(info => {
|
|
53
|
+
const relianceRelationAttributeQueryData = AttributeQuery.getAttributeQueryDataForRecord(info.linkName, map, includeSameTableReliance, true);
|
|
54
|
+
result.push([
|
|
55
|
+
info.attributeName,
|
|
56
|
+
{
|
|
57
|
+
attributeQuery: ['id', [LINK_SYMBOL, { attributeQuery: relianceRelationAttributeQueryData }]]
|
|
58
|
+
}
|
|
59
|
+
]);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
// link record 的 source/target 字段
|
|
63
|
+
if (includeManagedRecordAttributes) {
|
|
64
|
+
recordInfo.managedRecordAttributes.forEach(info => {
|
|
65
|
+
result.push([
|
|
66
|
+
info.attributeName,
|
|
67
|
+
{
|
|
68
|
+
attributeQuery: ['id']
|
|
69
|
+
}
|
|
70
|
+
]);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
constructor(recordName, map, data = [], parentRecord, attributeName, shouldQueryParentLinkData) {
|
|
76
|
+
this.recordName = recordName;
|
|
77
|
+
this.map = map;
|
|
78
|
+
this.data = data;
|
|
79
|
+
this.parentRecord = parentRecord;
|
|
80
|
+
this.attributeName = attributeName;
|
|
81
|
+
this.shouldQueryParentLinkData = shouldQueryParentLinkData;
|
|
82
|
+
this.relatedRecords = [];
|
|
83
|
+
this.xToManyRecords = [];
|
|
84
|
+
this.xToOneRecords = [];
|
|
85
|
+
this.valueAttributes = [];
|
|
86
|
+
this.id = Math.random();
|
|
87
|
+
let valueAttributesSet = new Set();
|
|
88
|
+
data.forEach((rawItem) => {
|
|
89
|
+
const item = (typeof rawItem === 'string' ? [rawItem, {}, false] : rawItem);
|
|
90
|
+
const [attributeName, subQueryData, onlyRelationData] = item;
|
|
91
|
+
if (attributeName === LINK_SYMBOL) {
|
|
92
|
+
assert(!!(this.parentRecord && this.attributeName), `${this.parentRecord} ${this.attributeName} cannot be empty when query link data`);
|
|
93
|
+
const info = this.map.getInfo(this.parentRecord, this.attributeName);
|
|
94
|
+
this.parentLinkRecordQuery = RecordQuery.create(info.linkName, this.map, subQueryData, undefined);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (attributeName === ALL_ATTR_SYMBOL) {
|
|
98
|
+
valueAttributesSet = new Set(this.map.getRecordInfo(this.recordName).valueAttributes.map(info => info.attributeName));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const attributeInfo = this.map.getInfo(this.recordName, attributeName);
|
|
102
|
+
if (attributeInfo.isRecord) {
|
|
103
|
+
const relatedEntity = RecordQuery.create(attributeInfo.recordName, this.map, subQueryData, undefined, this.recordName, attributeName, onlyRelationData);
|
|
104
|
+
this.relatedRecords.push(relatedEntity);
|
|
105
|
+
if (attributeInfo.isXToMany) {
|
|
106
|
+
this.xToManyRecords.push(relatedEntity);
|
|
107
|
+
}
|
|
108
|
+
else if (attributeInfo.isXToOne) {
|
|
109
|
+
this.xToOneRecords.push(relatedEntity);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
valueAttributesSet.add(attributeName);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
this.valueAttributes = Array.from(valueAttributesSet);
|
|
117
|
+
// this.xToOneQueryTree = this.buildXToOneQueryTree()
|
|
118
|
+
this.fullQueryTree = this.buildFullQueryTree();
|
|
119
|
+
}
|
|
120
|
+
getValueAndXToOneRecordFields(nameContext = [this.recordName]) {
|
|
121
|
+
const queryAttributes = this.valueAttributes.includes('id') ? this.valueAttributes : ['id'].concat(this.valueAttributes);
|
|
122
|
+
const queryFields = queryAttributes.map(attributeName => {
|
|
123
|
+
return {
|
|
124
|
+
tableAliasAndField: this.map.getTableAliasAndFieldName(nameContext, attributeName).slice(0, 2),
|
|
125
|
+
nameContext,
|
|
126
|
+
attribute: attributeName
|
|
127
|
+
};
|
|
128
|
+
});
|
|
129
|
+
this.xToOneRecords.forEach((recordQuery) => {
|
|
130
|
+
const namePath = nameContext.concat(recordQuery.attributeName);
|
|
131
|
+
queryFields.push(...recordQuery.attributeQuery.getValueAndXToOneRecordFields(namePath));
|
|
132
|
+
if (recordQuery.attributeQuery.parentLinkRecordQuery) {
|
|
133
|
+
queryFields.push(...recordQuery.attributeQuery.parentLinkRecordQuery.attributeQuery.getValueAndXToOneRecordFields(namePath.concat(LINK_SYMBOL)));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
if (this.shouldQueryParentLinkData && this.parentLinkRecordQuery) {
|
|
137
|
+
const reverseAttribute = this.map.getInfo(this.parentRecord, this.attributeName).getReverseInfo()?.attributeName;
|
|
138
|
+
const namePath = nameContext.concat(reverseAttribute, LINK_SYMBOL);
|
|
139
|
+
const symmetricLinkPaths = this.map.spawnManyToManySymmetricPath(namePath);
|
|
140
|
+
if (!symmetricLinkPaths) {
|
|
141
|
+
queryFields.push(...this.parentLinkRecordQuery.attributeQuery.getValueAndXToOneRecordFields(namePath));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
queryFields.push(...this.parentLinkRecordQuery.attributeQuery.getValueAndXToOneRecordFields(symmetricLinkPaths[0]), ...this.parentLinkRecordQuery.attributeQuery.getValueAndXToOneRecordFields(symmetricLinkPaths[1]));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// xToMany 的 onlyRelationData 一起查,这是父亲在处理 findRelatedRecords 的时候传过来的。
|
|
148
|
+
return queryFields;
|
|
149
|
+
}
|
|
150
|
+
get xToOneQueryTree() {
|
|
151
|
+
return this.buildXToOneQueryTree();
|
|
152
|
+
}
|
|
153
|
+
buildXToOneQueryTree() {
|
|
154
|
+
// FIXME 过滤掉 x:1 中递归地情况。
|
|
155
|
+
const result = new RecordQueryTree(this.recordName, this.map, this.parentRecord, this.attributeName);
|
|
156
|
+
this.data.forEach(i => {
|
|
157
|
+
if (!Array.isArray(i)) {
|
|
158
|
+
result.addField([i]);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// CAUTION 我们这里只管 xToOne 的情况,因为 xToMany 都是外部用 id 去做二次查询得到的。不是用 join 语句一次性得到的。
|
|
162
|
+
this.xToOneRecords.forEach((recordQuery) => {
|
|
163
|
+
// CAUTION 注意要排除掉 goto 递归的情况。递归肯定无法一次 join 查出,不管是什么关系。
|
|
164
|
+
if (!recordQuery.goto) {
|
|
165
|
+
result.addRecord([recordQuery.attributeName], recordQuery.attributeQuery.xToOneQueryTree);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
if (this.shouldQueryParentLinkData && this.parentLinkRecordQuery) {
|
|
169
|
+
// link 也可能使用递归,所以也要排除掉。
|
|
170
|
+
if (!this.parentLinkRecordQuery.goto) {
|
|
171
|
+
const reverseInfo = this.map.getInfo(this.parentRecord, this.attributeName).getReverseInfo();
|
|
172
|
+
result.addRecord([reverseInfo?.attributeName, LINK_SYMBOL], this.parentLinkRecordQuery.attributeQuery.xToOneQueryTree);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
buildFullQueryTree() {
|
|
178
|
+
const result = new RecordQueryTree(this.recordName, this.map, this.parentRecord, this.attributeName);
|
|
179
|
+
this.relatedRecords.forEach((entityQuery) => {
|
|
180
|
+
result.addRecord([entityQuery.attributeName], entityQuery.attributeQuery.fullQueryTree);
|
|
181
|
+
});
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
withParentLinkData() {
|
|
185
|
+
if (!this.parentLinkRecordQuery)
|
|
186
|
+
return this;
|
|
187
|
+
return new AttributeQuery(this.recordName, this.map, this.data, this.parentRecord, this.attributeName, true);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=AttributeQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeQuery.js","sourceRoot":"","sources":["../../../src/storage/erstorage/AttributeQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EntityToTableMap } from "./EntityToTableMap.js";
|
|
2
|
+
import { MatchExp, MatchExpressionData } from "./MatchExp.js";
|
|
3
|
+
import { ModifierData } from "./Modifier.js";
|
|
4
|
+
import { AttributeQueryData } from "./AttributeQuery.js";
|
|
5
|
+
import { RawEntityData } from "./NewRecordData.js";
|
|
6
|
+
import { RecordQueryAgent } from "./RecordQueryAgent.js";
|
|
7
|
+
import { EntityIdRef, Database, RecordMutationEvent } from "@runtime";
|
|
8
|
+
export declare class EntityQueryHandle {
|
|
9
|
+
map: EntityToTableMap;
|
|
10
|
+
database: Database;
|
|
11
|
+
agent: RecordQueryAgent;
|
|
12
|
+
constructor(map: EntityToTableMap, database: Database);
|
|
13
|
+
findOne(entityName: string, matchExpression?: MatchExpressionData, modifier?: ModifierData, attributeQuery?: AttributeQueryData): Promise<import("@runtime").Record>;
|
|
14
|
+
find(entityName: string, matchExpressionData?: MatchExpressionData, modifierData?: ModifierData, attributeQueryData?: AttributeQueryData): Promise<import("@runtime").Record[]>;
|
|
15
|
+
create(entityName: string, rawData: RawEntityData, events?: RecordMutationEvent[]): Promise<EntityIdRef>;
|
|
16
|
+
update(entity: string, matchExpressionData: MatchExpressionData, rawData: RawEntityData, events?: RecordMutationEvent[]): Promise<import("@runtime").Record[]>;
|
|
17
|
+
delete(entityName: string, matchExpressionData: MatchExpressionData, events?: RecordMutationEvent[]): Promise<import("@runtime").Record[]>;
|
|
18
|
+
addRelationByNameById(relationName: string, sourceEntityId: string, targetEntityId: string, rawData?: RawEntityData, events?: RecordMutationEvent[]): Promise<EntityIdRef>;
|
|
19
|
+
addRelationById(entity: string, attribute: string, entityId: string, attributeEntityId: string, relationData?: RawEntityData, events?: RecordMutationEvent[]): Promise<EntityIdRef>;
|
|
20
|
+
updateRelationByName(relationName: string, matchExpressionData: MatchExpressionData, rawData: RawEntityData, events?: RecordMutationEvent[]): Promise<import("@runtime").Record[]>;
|
|
21
|
+
removeRelationByName(relationName: string, matchExpressionData: MatchExpressionData, events?: RecordMutationEvent[]): Promise<void | import("@runtime").Record[]>;
|
|
22
|
+
findRelationByName(relationName: string, matchExpressionData?: MatchExpressionData, modifierData?: ModifierData, attributeQueryData?: AttributeQueryData): Promise<import("@runtime").Record[]>;
|
|
23
|
+
findOneRelationByName(relationName: string, matchExpressionData: MatchExpressionData, modifierData?: ModifierData, attributeQueryData?: AttributeQueryData): Promise<import("@runtime").Record>;
|
|
24
|
+
findPath(entity: string, attribute: string, entityId: string, ancestorId: string): Promise<import("@runtime").Record[] | undefined>;
|
|
25
|
+
createMatchFromAtom(...arg: Parameters<(typeof MatchExp)["atom"]>): import("@runtime").BoolExp<import("@runtime").MatchAtom>;
|
|
26
|
+
getRelationName(entity: string, attribute: string): string;
|
|
27
|
+
getEntityName(entity: string, attribute: string): string;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=EntityQueryHandle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityQueryHandle.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/EntityQueryHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAgB,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAEpE,qBAAa,iBAAiB;IAGP,GAAG,EAAE,gBAAgB;IAAS,QAAQ,EAAE,QAAQ;IAFnE,KAAK,EAAE,gBAAgB,CAAA;gBAEJ,GAAG,EAAE,gBAAgB,EAAS,QAAQ,EAAE,QAAQ;IAI7D,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,mBAAmB,EAAE,QAAQ,GAAE,YAAiB,EAAE,cAAc,CAAC,EAAE,kBAAkB;IASnI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,kBAAkB,GAAE,kBAAuB;IAe5I,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAMxG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAKvH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAIlG,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAKvJ,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAI5J,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAK3I,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAInH,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,kBAAkB,GAAE,kBAAuB;IAI5J,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,GAAE,YAAiB,EAAE,kBAAkB,GAAE,kBAAuB;IASlK,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAItF,mBAAmB,CAAC,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IAGjE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAG1D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAI3D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { MatchExp } from "./MatchExp.js";
|
|
2
|
+
import { assert } from "../utils.js";
|
|
3
|
+
import { RecordQuery } from "./RecordQuery.js";
|
|
4
|
+
import { NewRecordData } from "./NewRecordData.js";
|
|
5
|
+
import { RecordQueryAgent } from "./RecordQueryAgent.js";
|
|
6
|
+
export class EntityQueryHandle {
|
|
7
|
+
constructor(map, database) {
|
|
8
|
+
this.map = map;
|
|
9
|
+
this.database = database;
|
|
10
|
+
this.agent = new RecordQueryAgent(map, database);
|
|
11
|
+
}
|
|
12
|
+
async findOne(entityName, matchExpression, modifier = {}, attributeQuery) {
|
|
13
|
+
const limitedModifier = {
|
|
14
|
+
...modifier,
|
|
15
|
+
limit: 1
|
|
16
|
+
};
|
|
17
|
+
return (await this.find(entityName, matchExpression, limitedModifier, attributeQuery))[0];
|
|
18
|
+
}
|
|
19
|
+
async find(entityName, matchExpressionData, modifierData, attributeQueryData = []) {
|
|
20
|
+
assert(this.map.getRecord(entityName), `cannot find entity ${entityName}`);
|
|
21
|
+
const entityQuery = RecordQuery.create(entityName, this.map, {
|
|
22
|
+
matchExpression: matchExpressionData,
|
|
23
|
+
attributeQuery: attributeQueryData,
|
|
24
|
+
modifier: modifierData
|
|
25
|
+
});
|
|
26
|
+
return this.agent.findRecords(entityQuery, `finding ${entityName} from handle`);
|
|
27
|
+
}
|
|
28
|
+
async create(entityName, rawData, events) {
|
|
29
|
+
const newEntityData = new NewRecordData(this.map, entityName, rawData);
|
|
30
|
+
return this.agent.createRecord(newEntityData, `create record ${entityName} from handle`, events);
|
|
31
|
+
}
|
|
32
|
+
// CAUTION 不能递归更新 relate entity 的 value,如果传入了 related entity 的值,说明是建立新的联系。
|
|
33
|
+
async update(entity, matchExpressionData, rawData, events) {
|
|
34
|
+
const newEntityData = new NewRecordData(this.map, entity, rawData);
|
|
35
|
+
return this.agent.updateRecord(entity, matchExpressionData, newEntityData, events);
|
|
36
|
+
}
|
|
37
|
+
async delete(entityName, matchExpressionData, events) {
|
|
38
|
+
return this.agent.deleteRecord(entityName, matchExpressionData, events);
|
|
39
|
+
}
|
|
40
|
+
async addRelationByNameById(relationName, sourceEntityId, targetEntityId, rawData = {}, events) {
|
|
41
|
+
assert(!!relationName && !!sourceEntityId && targetEntityId, `relationName: ${relationName} sourceEntityId:${sourceEntityId} targetEntityId:${targetEntityId} all cannot be empty`);
|
|
42
|
+
return this.agent.addLink(relationName, sourceEntityId, targetEntityId, rawData, false, events);
|
|
43
|
+
}
|
|
44
|
+
async addRelationById(entity, attribute, entityId, attributeEntityId, relationData, events) {
|
|
45
|
+
return this.agent.addLinkFromRecord(entity, attribute, entityId, attributeEntityId, relationData, events);
|
|
46
|
+
}
|
|
47
|
+
async updateRelationByName(relationName, matchExpressionData, rawData, events) {
|
|
48
|
+
assert(!rawData.source && !rawData.target, 'Relation can only update attributes. Use addRelation/removeRelation to update source/target.');
|
|
49
|
+
return this.agent.updateRecord(relationName, matchExpressionData, new NewRecordData(this.map, relationName, rawData), events);
|
|
50
|
+
}
|
|
51
|
+
async removeRelationByName(relationName, matchExpressionData, events) {
|
|
52
|
+
return this.agent.unlink(relationName, matchExpressionData, false, `remove relation ${relationName}`, events);
|
|
53
|
+
}
|
|
54
|
+
async findRelationByName(relationName, matchExpressionData, modifierData, attributeQueryData = []) {
|
|
55
|
+
return this.find(relationName, matchExpressionData, modifierData, attributeQueryData);
|
|
56
|
+
}
|
|
57
|
+
async findOneRelationByName(relationName, matchExpressionData, modifierData = {}, attributeQueryData = []) {
|
|
58
|
+
const limitedModifier = {
|
|
59
|
+
...modifierData,
|
|
60
|
+
limit: 1
|
|
61
|
+
};
|
|
62
|
+
return (await this.findRelationByName(relationName, matchExpressionData, limitedModifier, attributeQueryData))[0];
|
|
63
|
+
}
|
|
64
|
+
async findPath(entity, attribute, entityId, ancestorId) {
|
|
65
|
+
return this.agent.findPath(entity, attribute, entityId, ancestorId);
|
|
66
|
+
}
|
|
67
|
+
createMatchFromAtom(...arg) {
|
|
68
|
+
return MatchExp.atom(...arg);
|
|
69
|
+
}
|
|
70
|
+
getRelationName(entity, attribute) {
|
|
71
|
+
return this.map.getInfo(entity, attribute).linkName;
|
|
72
|
+
}
|
|
73
|
+
getEntityName(entity, attribute) {
|
|
74
|
+
const info = this.map.getInfo(entity, attribute);
|
|
75
|
+
return info.recordName;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=EntityQueryHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityQueryHandle.js","sourceRoot":"","sources":["../../../src/storage/erstorage/EntityQueryHandle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAGvD,MAAM,OAAO,iBAAiB;IAG1B,YAAmB,GAAqB,EAAS,QAAkB;QAAhD,QAAG,GAAH,GAAG,CAAkB;QAAS,aAAQ,GAAR,QAAQ,CAAU;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,eAAqC,EAAE,WAAyB,EAAE,EAAE,cAAmC;QACrI,MAAM,eAAe,GAAG;YACpB,GAAG,QAAQ;YACX,KAAK,EAAE,CAAC;SACX,CAAA;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,mBAAyC,EAAE,YAA2B,EAAE,qBAAyC,EAAE;QAC9I,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,sBAAsB,UAAU,EAAE,CAAC,CAAA;QAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAClC,UAAU,EACV,IAAI,CAAC,GAAG,EACR;YACI,eAAe,EAAE,mBAAmB;YACpC,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,YAAY;SACzB,CACJ,CAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,UAAU,cAAc,CAAC,CAAA;IACnF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,OAAsB,EAAE,MAA8B;QACnF,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,iBAAiB,UAAU,cAAc,EAAE,MAAM,CAAC,CAAA;IACpG,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,mBAAwC,EAAE,OAAsB,EAAE,MAA8B;QACzH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IACtF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,mBAAwC,EAAC,MAA8B;QACpG,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,YAAoB,EAAE,cAAsB,EAAE,cAAsB,EAAE,UAAyB,EAAE,EAAE,MAA8B;QACzJ,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,cAAc,IAAI,cAAgB,EAAE,iBAAiB,YAAY,mBAAmB,cAAc,mBAAmB,cAAc,sBAAsB,CAAC,CAAA;QACrL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACnG,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAgB,EAAE,iBAAyB,EAAE,YAA4B,EAAE,MAA8B;QAC9J,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAC7G,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,YAAoB,EAAE,mBAAwC,EAAE,OAAsB,EAAE,MAA8B;QAC7I,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,8FAA8F,CAAC,CAAA;QAC1I,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,mBAAmB,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;IACjI,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,YAAoB,EAAE,mBAAwC,EAAE,MAA8B;QACrH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,YAAY,EAAE,EAAE,MAAM,CAAC,CAAA;IACjH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAAoB,EAAE,mBAAyC,EAAE,YAA2B,EAAE,qBAAyC,EAAE;QAC9J,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,YAAoB,EAAE,mBAAwC,EAAE,eAA6B,EAAE,EAAE,qBAAyC,EAAE;QACpK,MAAM,eAAe,GAAG;YACpB,GAAG,YAAY;YACf,KAAK,EAAE,CAAC;SACX,CAAA;QAED,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAgB,EAAE,UAAkB;QAClF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;IACvE,CAAC;IAED,mBAAmB,CAAC,GAAG,GAA0C;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IAChC,CAAC;IACD,eAAe,CAAC,MAAc,EAAE,SAAiB;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAA;IACvD,CAAC;IACD,aAAa,CAAC,MAAc,EAAE,SAAiB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;CACJ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { AttributeInfo } from "./AttributeInfo.js";
|
|
2
|
+
import { RecordInfo } from "./RecordInfo.js";
|
|
3
|
+
import { LinkInfo } from "./LinkInfo.js";
|
|
4
|
+
export type ValueAttribute = {
|
|
5
|
+
type: string;
|
|
6
|
+
collection?: boolean;
|
|
7
|
+
table?: string;
|
|
8
|
+
field: string;
|
|
9
|
+
fieldType?: string;
|
|
10
|
+
computed?: (record: any) => any;
|
|
11
|
+
defaultValue?: () => any;
|
|
12
|
+
};
|
|
13
|
+
export type RecordAttribute = {
|
|
14
|
+
type: 'id';
|
|
15
|
+
isRecord: true;
|
|
16
|
+
linkName: string;
|
|
17
|
+
isSource?: boolean;
|
|
18
|
+
relType: ['1' | 'n', '1' | 'n'];
|
|
19
|
+
recordName: string;
|
|
20
|
+
table?: string;
|
|
21
|
+
field?: string;
|
|
22
|
+
isReliance?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type RecordMapItem = {
|
|
25
|
+
table: string;
|
|
26
|
+
attributes: {
|
|
27
|
+
[k: string]: ValueAttribute | RecordAttribute;
|
|
28
|
+
};
|
|
29
|
+
isRelation?: boolean;
|
|
30
|
+
};
|
|
31
|
+
type RecordMap = {
|
|
32
|
+
[k: string]: RecordMapItem;
|
|
33
|
+
};
|
|
34
|
+
export type LinkMapItem = {
|
|
35
|
+
relType: [string, string];
|
|
36
|
+
sourceRecord: string;
|
|
37
|
+
sourceProperty: string;
|
|
38
|
+
targetRecord: string;
|
|
39
|
+
targetProperty: string | undefined;
|
|
40
|
+
isSourceRelation?: boolean;
|
|
41
|
+
recordName?: string;
|
|
42
|
+
mergedTo?: 'source' | 'target' | 'combined';
|
|
43
|
+
table?: string;
|
|
44
|
+
sourceField?: string;
|
|
45
|
+
targetField?: string;
|
|
46
|
+
isTargetReliance?: boolean;
|
|
47
|
+
};
|
|
48
|
+
type LinkMap = {
|
|
49
|
+
[k: string]: LinkMapItem;
|
|
50
|
+
};
|
|
51
|
+
export type MapData = {
|
|
52
|
+
records: RecordMap;
|
|
53
|
+
links: LinkMap;
|
|
54
|
+
};
|
|
55
|
+
type TableAndAliasStack = {
|
|
56
|
+
table: string;
|
|
57
|
+
alias: string;
|
|
58
|
+
record: RecordMapItem;
|
|
59
|
+
isLinkRecord: boolean;
|
|
60
|
+
linkTable?: string;
|
|
61
|
+
linkAlias?: string;
|
|
62
|
+
link?: LinkMapItem;
|
|
63
|
+
path: string[];
|
|
64
|
+
}[];
|
|
65
|
+
export declare class EntityToTableMap {
|
|
66
|
+
data: MapData;
|
|
67
|
+
constructor(data: MapData);
|
|
68
|
+
getRecordTable(entityName: string): string;
|
|
69
|
+
getRecord(recordName: string): RecordMapItem;
|
|
70
|
+
getAttributeAndSymmetricDirection(rawAttributeName: string): [string, 'source' | 'target' | undefined];
|
|
71
|
+
getAttributeData(recordName: string, attributeName: string): ValueAttribute | RecordAttribute;
|
|
72
|
+
getRecordInfo(recordName: string): RecordInfo;
|
|
73
|
+
getInfo(entityName: string, attribute: string): AttributeInfo;
|
|
74
|
+
getLinkInfo(recordName: string, rawAttribute: string): LinkInfo;
|
|
75
|
+
getLinkInfoByName(linkName: string): LinkInfo;
|
|
76
|
+
getInfoByPath(namePath: string[]): AttributeInfo | undefined;
|
|
77
|
+
getTableAndAliasStack(namePath: string[]): TableAndAliasStack;
|
|
78
|
+
getTableAliasAndFieldName(namePath: string[], attributeName: string, dontShrink?: boolean): [string, string, string];
|
|
79
|
+
findManyToManySymmetricPath(namePath: string[]): string[] | undefined;
|
|
80
|
+
spawnManyToManySymmetricPath(namePath: string[]): [string[], string[]] | undefined;
|
|
81
|
+
getReverseAttribute(entityName: string, attribute: string): string;
|
|
82
|
+
groupAttributes(entityName: string, attributeNames: string[]): [AttributeInfo[], AttributeInfo[], AttributeInfo[]];
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=EntityToTableMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityToTableMap.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/EntityToTableMap.ts"],"names":[],"mappings":"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"}
|