interaqt 0.1.0 → 0.2.1
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/agent/.claude/agents/code-generation-handler.md +598 -0
- package/agent/.claude/agents/computation-generation-handler.md +290 -0
- package/agent/.claude/agents/implement-design-handler.md +179 -0
- package/agent/.claude/agents/permission-generation-handler.md +202 -0
- package/agent/.claude/agents/requirements-analysis-handler-bak.md +530 -0
- package/agent/.claude/agents/requirements-analysis-handler.md +720 -0
- package/agent/.claude/settings.local.json +46 -0
- package/agent/CLAUDE.md +72 -0
- package/dist/index.js +10508 -4
- package/dist/index.js.map +1 -1
- package/dist/runtime/ComputationSourceMap.d.ts +117 -0
- package/dist/runtime/ComputationSourceMap.d.ts.map +1 -0
- package/dist/runtime/Controller.d.ts +37 -26
- package/dist/runtime/Controller.d.ts.map +1 -1
- package/dist/runtime/ExternalSynchronizer.d.ts +6 -0
- package/dist/runtime/ExternalSynchronizer.d.ts.map +1 -0
- package/dist/runtime/MonoSystem.d.ts +29 -17
- package/dist/runtime/MonoSystem.d.ts.map +1 -1
- package/dist/runtime/Mysql.d.ts +2 -2
- package/dist/runtime/PGLite.d.ts +35 -0
- package/dist/runtime/PGLite.d.ts.map +1 -0
- package/dist/runtime/PostgreSQL.d.ts +2 -2
- package/dist/runtime/SQLite.d.ts +3 -3
- package/dist/runtime/SQLite.d.ts.map +1 -1
- package/dist/runtime/Scheduler.d.ts +28 -61
- package/dist/runtime/Scheduler.d.ts.map +1 -1
- package/dist/runtime/System.d.ts +18 -224
- package/dist/runtime/System.d.ts.map +1 -1
- package/dist/runtime/{ActivityCall.d.ts → activity/ActivityCall.d.ts} +6 -7
- package/dist/runtime/activity/ActivityCall.d.ts.map +1 -0
- package/dist/runtime/activity/ActivityManager.d.ts +44 -0
- package/dist/runtime/activity/ActivityManager.d.ts.map +1 -0
- package/dist/runtime/{InteractionCall.d.ts → activity/InteractionCall.d.ts} +28 -41
- package/dist/runtime/activity/InteractionCall.d.ts.map +1 -0
- package/dist/runtime/computations/Any.d.ts +71 -0
- package/dist/runtime/computations/Any.d.ts.map +1 -0
- package/dist/runtime/computations/Average.d.ts +69 -0
- package/dist/runtime/computations/Average.d.ts.map +1 -0
- package/dist/runtime/computations/Computation.d.ts +138 -0
- package/dist/runtime/computations/Computation.d.ts.map +1 -0
- package/dist/runtime/computations/Count.d.ts +73 -0
- package/dist/runtime/computations/Count.d.ts.map +1 -0
- package/dist/runtime/computations/Custom.d.ts +45 -0
- package/dist/runtime/computations/Custom.d.ts.map +1 -0
- package/dist/runtime/computations/Every.d.ts +74 -0
- package/dist/runtime/computations/Every.d.ts.map +1 -0
- package/dist/runtime/computations/MathResolver.d.ts +60 -0
- package/dist/runtime/computations/MathResolver.d.ts.map +1 -0
- package/dist/runtime/computations/RealTime.d.ts +66 -0
- package/dist/runtime/computations/RealTime.d.ts.map +1 -0
- package/dist/runtime/{computedDataHandles → computations}/StateMachine.d.ts +31 -22
- package/dist/runtime/computations/StateMachine.d.ts.map +1 -0
- package/dist/runtime/computations/Summation.d.ts +66 -0
- package/dist/runtime/computations/Summation.d.ts.map +1 -0
- package/dist/runtime/computations/Transform.d.ts +29 -0
- package/dist/runtime/computations/Transform.d.ts.map +1 -0
- package/dist/runtime/computations/TransitionFinder.d.ts +11 -0
- package/dist/runtime/computations/TransitionFinder.d.ts.map +1 -0
- package/dist/runtime/computations/WeightedSummation.d.ts +71 -0
- package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -0
- package/dist/runtime/computations/index.d.ts +22 -0
- package/dist/runtime/computations/index.d.ts.map +1 -0
- package/dist/runtime/errors/ActivityErrors.d.ts +40 -0
- package/dist/runtime/errors/ActivityErrors.d.ts.map +1 -0
- package/dist/runtime/errors/ComputationErrors.d.ts +61 -0
- package/dist/runtime/errors/ComputationErrors.d.ts.map +1 -0
- package/dist/runtime/errors/ConditionErrors.d.ts +33 -0
- package/dist/runtime/errors/ConditionErrors.d.ts.map +1 -0
- package/dist/runtime/errors/FrameworkError.d.ts +77 -0
- package/dist/runtime/errors/FrameworkError.d.ts.map +1 -0
- package/dist/runtime/errors/InteractionErrors.d.ts +21 -0
- package/dist/runtime/errors/InteractionErrors.d.ts.map +1 -0
- package/dist/runtime/errors/SystemErrors.d.ts +16 -0
- package/dist/runtime/errors/SystemErrors.d.ts.map +1 -0
- package/dist/runtime/errors/index.d.ts +37 -0
- package/dist/runtime/errors/index.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +9 -7
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/shared/Action.d.ts +38 -0
- package/dist/shared/Action.d.ts.map +1 -0
- package/dist/shared/Activity.d.ts +178 -0
- package/dist/shared/Activity.d.ts.map +1 -0
- package/dist/shared/Any.d.ts +82 -0
- package/dist/shared/Any.d.ts.map +1 -0
- package/dist/shared/Attributive.d.ts +92 -0
- package/dist/shared/Attributive.d.ts.map +1 -0
- package/dist/shared/Average.d.ts +59 -0
- package/dist/shared/Average.d.ts.map +1 -0
- package/dist/shared/BoolExp.d.ts +139 -63
- package/dist/shared/BoolExp.d.ts.map +1 -1
- package/dist/shared/Computation.d.ts +23 -0
- package/dist/shared/Computation.d.ts.map +1 -0
- package/dist/shared/Condition.d.ts +43 -0
- package/dist/shared/Condition.d.ts.map +1 -0
- package/dist/shared/Conditions.d.ts +38 -0
- package/dist/shared/Conditions.d.ts.map +1 -0
- package/dist/shared/Count.d.ts +77 -0
- package/dist/shared/Count.d.ts.map +1 -0
- package/dist/shared/Custom.d.ts +108 -0
- package/dist/shared/Custom.d.ts.map +1 -0
- package/dist/shared/Data.d.ts +121 -0
- package/dist/shared/Data.d.ts.map +1 -0
- package/dist/shared/DataAttributives.d.ts +38 -0
- package/dist/shared/DataAttributives.d.ts.map +1 -0
- package/dist/shared/Entity.d.ts +96 -0
- package/dist/shared/Entity.d.ts.map +1 -0
- package/dist/shared/Event.d.ts +36 -0
- package/dist/shared/Event.d.ts.map +1 -0
- package/dist/shared/Every.d.ts +85 -0
- package/dist/shared/Every.d.ts.map +1 -0
- package/dist/shared/Gateway.d.ts +36 -0
- package/dist/shared/Gateway.d.ts.map +1 -0
- package/dist/shared/Interaction.d.ts +108 -0
- package/dist/shared/Interaction.d.ts.map +1 -0
- package/dist/shared/Payload.d.ts +39 -0
- package/dist/shared/Payload.d.ts.map +1 -0
- package/dist/shared/PayloadItem.d.ts +85 -0
- package/dist/shared/PayloadItem.d.ts.map +1 -0
- package/dist/shared/Property.d.ts +83 -0
- package/dist/shared/Property.d.ts.map +1 -0
- package/dist/shared/RealDictionary.d.ts +94 -0
- package/dist/shared/RealDictionary.d.ts.map +1 -0
- package/dist/shared/RealTime.d.ts +66 -0
- package/dist/shared/RealTime.d.ts.map +1 -0
- package/dist/shared/RefContainer.d.ts +89 -0
- package/dist/shared/RefContainer.d.ts.map +1 -0
- package/dist/shared/Relation.d.ts +140 -0
- package/dist/shared/Relation.d.ts.map +1 -0
- package/dist/shared/SideEffect.d.ts +45 -0
- package/dist/shared/SideEffect.d.ts.map +1 -0
- package/dist/shared/StateMachine.d.ts +55 -0
- package/dist/shared/StateMachine.d.ts.map +1 -0
- package/dist/shared/StateNode.d.ts +45 -0
- package/dist/shared/StateNode.d.ts.map +1 -0
- package/dist/shared/StateTransfer.d.ts +63 -0
- package/dist/shared/StateTransfer.d.ts.map +1 -0
- package/dist/shared/Summation.d.ts +59 -0
- package/dist/shared/Summation.d.ts.map +1 -0
- package/dist/shared/Transform.d.ts +54 -0
- package/dist/shared/Transform.d.ts.map +1 -0
- package/dist/shared/User.d.ts +10 -0
- package/dist/shared/User.d.ts.map +1 -0
- package/dist/shared/WeightedSummation.d.ts +82 -0
- package/dist/shared/WeightedSummation.d.ts.map +1 -0
- package/dist/shared/index.d.ts +35 -9
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/init.d.ts +3 -0
- package/dist/shared/init.d.ts.map +1 -0
- package/dist/shared/interfaces.d.ts +72 -0
- package/dist/shared/interfaces.d.ts.map +1 -0
- package/dist/shared/types.d.ts +77 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/utils.d.ts +16 -10
- package/dist/shared/utils.d.ts.map +1 -1
- package/dist/storage/erstorage/AttributeInfo.d.ts +8 -3
- package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -1
- package/dist/storage/erstorage/AttributeQuery.d.ts +4 -3
- package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
- package/dist/storage/erstorage/EntityQueryHandle.d.ts +18 -17
- package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -1
- package/dist/storage/erstorage/EntityToTableMap.d.ts +27 -5
- package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
- package/dist/storage/erstorage/FilteredEntityManager.d.ts +70 -0
- package/dist/storage/erstorage/FilteredEntityManager.d.ts.map +1 -0
- package/dist/storage/erstorage/LinkInfo.d.ts +10 -3
- package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -1
- package/dist/storage/erstorage/MatchExp.d.ts +19 -9
- package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
- package/dist/storage/erstorage/MergedItemProcessor.d.ts +25 -0
- package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -0
- package/dist/storage/erstorage/Modifier.d.ts +1 -1
- package/dist/storage/erstorage/NewRecordData.d.ts +16 -9
- package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordInfo.d.ts +11 -2
- package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordQuery.d.ts +9 -8
- package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordQueryAgent.d.ts +26 -13
- package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
- package/dist/storage/erstorage/Setup.d.ts +49 -11
- package/dist/storage/erstorage/Setup.d.ts.map +1 -1
- package/dist/storage/erstorage/util.d.ts.map +1 -1
- package/package.json +44 -20
- package/README.md +0 -53
- package/dist/runtime/ActivityCall.d.ts.map +0 -1
- package/dist/runtime/ActivityCall.js +0 -379
- package/dist/runtime/ActivityCall.js.map +0 -1
- package/dist/runtime/Controller.js +0 -225
- package/dist/runtime/Controller.js.map +0 -1
- package/dist/runtime/InteractionCall.d.ts.map +0 -1
- package/dist/runtime/InteractionCall.js +0 -385
- package/dist/runtime/InteractionCall.js.map +0 -1
- package/dist/runtime/MonoSystem.js +0 -331
- package/dist/runtime/MonoSystem.js.map +0 -1
- package/dist/runtime/Mysql.js +0 -171
- package/dist/runtime/Mysql.js.map +0 -1
- package/dist/runtime/PostgreSQL.js +0 -172
- package/dist/runtime/PostgreSQL.js.map +0 -1
- package/dist/runtime/SQLite.js +0 -146
- package/dist/runtime/SQLite.js.map +0 -1
- package/dist/runtime/Scheduler.js +0 -457
- package/dist/runtime/Scheduler.js.map +0 -1
- package/dist/runtime/System.js +0 -90
- package/dist/runtime/System.js.map +0 -1
- package/dist/runtime/asyncInteractionContext.js +0 -3
- package/dist/runtime/asyncInteractionContext.js.map +0 -1
- package/dist/runtime/boolExpression.js +0 -43
- package/dist/runtime/boolExpression.js.map +0 -1
- package/dist/runtime/computedDataHandles/Any.d.ts +0 -52
- package/dist/runtime/computedDataHandles/Any.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/Any.js +0 -152
- package/dist/runtime/computedDataHandles/Any.js.map +0 -1
- package/dist/runtime/computedDataHandles/Computation.d.ts +0 -108
- package/dist/runtime/computedDataHandles/Computation.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/Computation.js +0 -49
- package/dist/runtime/computedDataHandles/Computation.js.map +0 -1
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +0 -42
- package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js +0 -4
- package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +0 -1
- package/dist/runtime/computedDataHandles/Count.d.ts +0 -45
- package/dist/runtime/computedDataHandles/Count.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/Count.js +0 -85
- package/dist/runtime/computedDataHandles/Count.js.map +0 -1
- package/dist/runtime/computedDataHandles/Every.d.ts +0 -56
- package/dist/runtime/computedDataHandles/Every.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/Every.js +0 -178
- package/dist/runtime/computedDataHandles/Every.js.map +0 -1
- package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/StateMachine.js +0 -180
- package/dist/runtime/computedDataHandles/StateMachine.js.map +0 -1
- package/dist/runtime/computedDataHandles/Transform.d.ts +0 -26
- package/dist/runtime/computedDataHandles/Transform.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/Transform.js +0 -106
- package/dist/runtime/computedDataHandles/Transform.js.map +0 -1
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +0 -57
- package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/TransitionFinder.js +0 -40
- package/dist/runtime/computedDataHandles/TransitionFinder.js.map +0 -1
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +0 -57
- package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/WeightedSummation.js +0 -146
- package/dist/runtime/computedDataHandles/WeightedSummation.js.map +0 -1
- package/dist/runtime/computedDataHandles/index.d.ts +0 -7
- package/dist/runtime/computedDataHandles/index.d.ts.map +0 -1
- package/dist/runtime/computedDataHandles/index.js +0 -7
- package/dist/runtime/computedDataHandles/index.js.map +0 -1
- package/dist/runtime/index.js +0 -15
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/server.d.ts +0 -35
- package/dist/runtime/server.d.ts.map +0 -1
- package/dist/runtime/server.js +0 -171
- package/dist/runtime/server.js.map +0 -1
- package/dist/runtime/types/boolExpression.js +0 -6
- package/dist/runtime/types/boolExpression.js.map +0 -1
- package/dist/runtime/util.js +0 -39
- package/dist/runtime/util.js.map +0 -1
- package/dist/shared/BoolExp.js +0 -252
- package/dist/shared/BoolExp.js.map +0 -1
- package/dist/shared/activity/Activity.d.ts +0 -465
- package/dist/shared/activity/Activity.d.ts.map +0 -1
- package/dist/shared/activity/Activity.js +0 -264
- package/dist/shared/activity/Activity.js.map +0 -1
- package/dist/shared/activity/Condition.d.ts +0 -75
- package/dist/shared/activity/Condition.d.ts.map +0 -1
- package/dist/shared/activity/Condition.js +0 -51
- package/dist/shared/activity/Condition.js.map +0 -1
- package/dist/shared/activity/Data.d.ts +0 -115
- package/dist/shared/activity/Data.d.ts.map +0 -1
- package/dist/shared/activity/Data.js +0 -89
- package/dist/shared/activity/Data.js.map +0 -1
- package/dist/shared/attributive.d.ts +0 -93
- package/dist/shared/attributive.d.ts.map +0 -1
- package/dist/shared/attributive.js +0 -59
- package/dist/shared/attributive.js.map +0 -1
- package/dist/shared/computed.d.ts +0 -607
- package/dist/shared/computed.d.ts.map +0 -1
- package/dist/shared/computed.js +0 -202
- package/dist/shared/computed.js.map +0 -1
- package/dist/shared/createClass.d.ts +0 -102
- package/dist/shared/createClass.d.ts.map +0 -1
- package/dist/shared/createClass.js +0 -276
- package/dist/shared/createClass.js.map +0 -1
- package/dist/shared/dictionary/Dictionary.d.ts +0 -40
- package/dist/shared/dictionary/Dictionary.d.ts.map +0 -1
- package/dist/shared/dictionary/Dictionary.js +0 -51
- package/dist/shared/dictionary/Dictionary.js.map +0 -1
- package/dist/shared/entity/Entity.d.ts +0 -149
- package/dist/shared/entity/Entity.d.ts.map +0 -1
- package/dist/shared/entity/Entity.js +0 -226
- package/dist/shared/entity/Entity.js.map +0 -1
- package/dist/shared/index.js +0 -11
- package/dist/shared/index.js.map +0 -1
- package/dist/shared/user/User.d.ts +0 -21
- package/dist/shared/user/User.d.ts.map +0 -1
- package/dist/shared/user/User.js +0 -11
- package/dist/shared/user/User.js.map +0 -1
- package/dist/shared/utils.js +0 -19
- package/dist/shared/utils.js.map +0 -1
- package/dist/storage/erstorage/AttributeInfo.js +0 -147
- package/dist/storage/erstorage/AttributeInfo.js.map +0 -1
- package/dist/storage/erstorage/AttributeQuery.js +0 -190
- package/dist/storage/erstorage/AttributeQuery.js.map +0 -1
- package/dist/storage/erstorage/EntityQueryHandle.js +0 -78
- package/dist/storage/erstorage/EntityQueryHandle.js.map +0 -1
- package/dist/storage/erstorage/EntityToTableMap.js +0 -262
- package/dist/storage/erstorage/EntityToTableMap.js.map +0 -1
- package/dist/storage/erstorage/LinkInfo.js +0 -89
- package/dist/storage/erstorage/LinkInfo.js.map +0 -1
- package/dist/storage/erstorage/MatchExp.js +0 -211
- package/dist/storage/erstorage/MatchExp.js.map +0 -1
- package/dist/storage/erstorage/Modifier.js +0 -24
- package/dist/storage/erstorage/Modifier.js.map +0 -1
- package/dist/storage/erstorage/NewRecordData.js +0 -178
- package/dist/storage/erstorage/NewRecordData.js.map +0 -1
- package/dist/storage/erstorage/RecordInfo.js +0 -111
- package/dist/storage/erstorage/RecordInfo.js.map +0 -1
- package/dist/storage/erstorage/RecordQuery.js +0 -158
- package/dist/storage/erstorage/RecordQuery.js.map +0 -1
- package/dist/storage/erstorage/RecordQueryAgent.js +0 -1130
- package/dist/storage/erstorage/RecordQueryAgent.js.map +0 -1
- package/dist/storage/erstorage/Setup.js +0 -400
- package/dist/storage/erstorage/Setup.js.map +0 -1
- package/dist/storage/erstorage/util.js +0 -25
- package/dist/storage/erstorage/util.js.map +0 -1
- package/dist/storage/index.js +0 -13
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/utils.js +0 -48
- package/dist/storage/utils.js.map +0 -1
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import { assert } from "../utils.js";
|
|
2
|
-
import { AttributeInfo } from "./AttributeInfo.js";
|
|
3
|
-
import { RecordInfo } from "./RecordInfo.js";
|
|
4
|
-
import { LinkInfo } from "./LinkInfo.js";
|
|
5
|
-
import { LINK_SYMBOL } from "./RecordQuery.js";
|
|
6
|
-
export class EntityToTableMap {
|
|
7
|
-
constructor(data) {
|
|
8
|
-
this.data = data;
|
|
9
|
-
}
|
|
10
|
-
getRecordTable(entityName) {
|
|
11
|
-
return this.data.records[entityName].table;
|
|
12
|
-
}
|
|
13
|
-
getRecord(recordName) {
|
|
14
|
-
return this.data.records[recordName];
|
|
15
|
-
}
|
|
16
|
-
getAttributeAndSymmetricDirection(rawAttributeName) {
|
|
17
|
-
return rawAttributeName.includes(':') ? rawAttributeName.split(':') : [rawAttributeName, undefined];
|
|
18
|
-
}
|
|
19
|
-
getAttributeData(recordName, attributeName) {
|
|
20
|
-
return this.data.records[recordName].attributes[this.getAttributeAndSymmetricDirection(attributeName)[0]];
|
|
21
|
-
}
|
|
22
|
-
getRecordInfo(recordName) {
|
|
23
|
-
return new RecordInfo(recordName, this);
|
|
24
|
-
}
|
|
25
|
-
getInfo(entityName, attribute) {
|
|
26
|
-
const result = this.getInfoByPath([entityName, ...(attribute.split('.'))]);
|
|
27
|
-
assert(!!result, `cannot find attribute "${attribute}" in "${entityName}". attributes: ${this.data.records[entityName] && Object.keys(this.data.records[entityName]?.attributes)}`);
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
getLinkInfo(recordName, rawAttribute) {
|
|
31
|
-
const attribute = this.getAttributeAndSymmetricDirection(rawAttribute)[0];
|
|
32
|
-
const linkName = this.data.records[recordName].attributes[attribute].linkName;
|
|
33
|
-
assert(!!linkName, `cannot find relation ${recordName} ${attribute}`);
|
|
34
|
-
return new LinkInfo(linkName, this.data.links[linkName], this);
|
|
35
|
-
}
|
|
36
|
-
getLinkInfoByName(linkName) {
|
|
37
|
-
assert(!!this.data.links[linkName], `cannot find link ${linkName}`);
|
|
38
|
-
return new LinkInfo(linkName, this.data.links[linkName], this);
|
|
39
|
-
}
|
|
40
|
-
getInfoByPath(namePath) {
|
|
41
|
-
const [entityName, ...attributivePath] = namePath;
|
|
42
|
-
assert(this.data.records[entityName], `entity ${entityName} not found`);
|
|
43
|
-
assert(attributivePath.length > 0, 'getInfoByPath should have a name path.');
|
|
44
|
-
let currentEntity = entityName;
|
|
45
|
-
let parentEntity;
|
|
46
|
-
let lastAttribute;
|
|
47
|
-
let attributeData;
|
|
48
|
-
let rawCurrentAttribute;
|
|
49
|
-
let lastSymmetricDirection;
|
|
50
|
-
const stack = [];
|
|
51
|
-
while (rawCurrentAttribute = attributivePath.shift()) {
|
|
52
|
-
stack.push(rawCurrentAttribute);
|
|
53
|
-
// 路径中可能有 symmetric 的方向
|
|
54
|
-
const [currentAttribute, symmetricDirection] = this.getAttributeAndSymmetricDirection(rawCurrentAttribute);
|
|
55
|
-
lastSymmetricDirection = symmetricDirection;
|
|
56
|
-
// 增加了 & 的影响
|
|
57
|
-
if (currentAttribute === LINK_SYMBOL) {
|
|
58
|
-
assert(!!parentEntity && !!lastAttribute, `reading link in wrong path ${stack.join('.')}`);
|
|
59
|
-
parentEntity = this.data.records[parentEntity].attributes[lastAttribute].linkName;
|
|
60
|
-
lastAttribute = undefined;
|
|
61
|
-
currentEntity = attributeData.linkName;
|
|
62
|
-
attributeData = undefined;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const data = this.data.records[currentEntity];
|
|
66
|
-
attributeData = data.attributes[currentAttribute];
|
|
67
|
-
assert(!!attributeData, `attribute ${currentAttribute} not found in ${currentEntity}. namePath: ${namePath.join('.')}`);
|
|
68
|
-
parentEntity = currentEntity;
|
|
69
|
-
currentEntity = attributeData.isRecord ? attributeData.recordName : '';
|
|
70
|
-
lastAttribute = currentAttribute;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (!parentEntity || !lastAttribute)
|
|
74
|
-
return undefined;
|
|
75
|
-
return new AttributeInfo(parentEntity, lastAttribute, this, lastSymmetricDirection);
|
|
76
|
-
}
|
|
77
|
-
getTableAndAliasStack(namePath) {
|
|
78
|
-
const [rootEntityName, ...relationPath] = namePath;
|
|
79
|
-
let lastEntityData = this.data.records[rootEntityName];
|
|
80
|
-
let lastTable = lastEntityData.table;
|
|
81
|
-
let lastTableAlias = rootEntityName;
|
|
82
|
-
let relationTable;
|
|
83
|
-
let relationTableAlias;
|
|
84
|
-
let isLinkRecord = false;
|
|
85
|
-
let info;
|
|
86
|
-
const result = [{
|
|
87
|
-
// 最后一张表名
|
|
88
|
-
table: lastTable,
|
|
89
|
-
// 最后一张表 alias,
|
|
90
|
-
alias: lastTableAlias,
|
|
91
|
-
// 最后表代表的 entity 数据,
|
|
92
|
-
record: lastEntityData,
|
|
93
|
-
isLinkRecord,
|
|
94
|
-
// 上一张表和最后一张表的关联表(如果是 relation 和 entity 的连接,这个link 就是虚拟的,table 是空,因为肯定是个合并的),
|
|
95
|
-
// linkTable: relationTable,
|
|
96
|
-
// 上一张表和最后一张表的关联表的 alias.
|
|
97
|
-
// linkAlias: relationTableAlias,
|
|
98
|
-
// link: currentLink,
|
|
99
|
-
path: [rootEntityName]
|
|
100
|
-
}];
|
|
101
|
-
for (let i = 0; i < relationPath.length; i++) {
|
|
102
|
-
// 对称关系要说明方向,不然 join 表的时候两个方向都用的同一个 alias,逻辑错误。它的格式是 'xxx:source' 或者 ‘xxx:target’
|
|
103
|
-
const [currentAttributeName, symmetricDirection] = this.getAttributeAndSymmetricDirection(relationPath[i]);
|
|
104
|
-
const path = [rootEntityName, ...relationPath.slice(0, i + 1)];
|
|
105
|
-
// 如果是读 link 上的数据
|
|
106
|
-
if (currentAttributeName === LINK_SYMBOL) {
|
|
107
|
-
// 先把上一个 Pop 出来。
|
|
108
|
-
const { linkTable, linkAlias, path } = result.pop();
|
|
109
|
-
assert(!isLinkRecord, `last attribute in path is a link, cannot read link of a link ${path.join('.')}`);
|
|
110
|
-
lastTable = linkTable;
|
|
111
|
-
lastTableAlias = linkAlias;
|
|
112
|
-
lastEntityData = this.data.records[info.linkName];
|
|
113
|
-
isLinkRecord = true;
|
|
114
|
-
relationTable = '';
|
|
115
|
-
relationTableAlias = '';
|
|
116
|
-
info = undefined;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
info = this.getInfoByPath(path);
|
|
120
|
-
const currentEntityAttribute = lastEntityData.attributes[currentAttributeName];
|
|
121
|
-
assert(info.isRecord, `${relationPath.slice(0, i + 1).join('.')} is not a entity attribute`);
|
|
122
|
-
const currentEntityData = this.data.records[currentEntityAttribute.recordName];
|
|
123
|
-
// 处理 symmetric 中的:
|
|
124
|
-
const currentTableAlias = `${lastTableAlias}_${currentAttributeName}${symmetricDirection ? `_${symmetricDirection.toUpperCase()}` : ''}`;
|
|
125
|
-
// CAUTION 一定要先处理 linkAlias,因为依赖于上一次 tableAlias。
|
|
126
|
-
if (info.isMergedWithParent() || info.isLinkMergedWithParent()) {
|
|
127
|
-
// 和上一个表同名。当前表也就是上一个
|
|
128
|
-
relationTableAlias = lastTableAlias;
|
|
129
|
-
// link 没有合并的情况也要生成新的 alias。否则就和 lastTableAlias 同名
|
|
130
|
-
}
|
|
131
|
-
else if (info.isLinkIsolated()) {
|
|
132
|
-
// link 表独立,给个新名字
|
|
133
|
-
// CAUTION symmetric 路径要手动指定关系
|
|
134
|
-
relationTableAlias = `REL_${currentTableAlias}`;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
// link 表合并了,名字和当前一样。
|
|
138
|
-
relationTableAlias = currentTableAlias;
|
|
139
|
-
}
|
|
140
|
-
// CAUTION 只要不是合表的,就要生成新的 alias.
|
|
141
|
-
if (!info.isMergedWithParent()) {
|
|
142
|
-
lastTableAlias = currentTableAlias;
|
|
143
|
-
}
|
|
144
|
-
lastTable = info.table;
|
|
145
|
-
lastEntityData = currentEntityData;
|
|
146
|
-
// TODO 找到 relationTable ,生成 relationTableName
|
|
147
|
-
// relation table 有三种情况: 独立的/往n 方向合表了,与 1:1 合成一张表了。
|
|
148
|
-
relationTable = info.getLinkInfo()?.table;
|
|
149
|
-
// relationTable 的 alias 始终保持和 tableAlias 一致的规律
|
|
150
|
-
isLinkRecord = false;
|
|
151
|
-
}
|
|
152
|
-
result.push({
|
|
153
|
-
table: lastTable,
|
|
154
|
-
alias: lastTableAlias,
|
|
155
|
-
record: lastEntityData,
|
|
156
|
-
isLinkRecord,
|
|
157
|
-
linkTable: relationTable,
|
|
158
|
-
linkAlias: relationTableAlias,
|
|
159
|
-
path
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
return result;
|
|
163
|
-
}
|
|
164
|
-
getTableAliasAndFieldName(namePath, attributeName, dontShrink = false) {
|
|
165
|
-
const stack = this.getTableAndAliasStack(namePath);
|
|
166
|
-
const { table, alias, record, path, linkAlias, linkTable, isLinkRecord } = stack.at(-1);
|
|
167
|
-
const attrInfo = (!isLinkRecord && stack.length > 1) ? this.getInfoByPath(path) : null;
|
|
168
|
-
const canShrinkIdPath = !dontShrink &&
|
|
169
|
-
attributeName === 'id' &&
|
|
170
|
-
!isLinkRecord &&
|
|
171
|
-
namePath.length > 1 &&
|
|
172
|
-
(attrInfo?.isLinkMergedWithParent() || attrInfo?.isLinkIsolated());
|
|
173
|
-
// 获取 id 时,可以直接从关系表上获得,不需要额外的 table
|
|
174
|
-
if (canShrinkIdPath) {
|
|
175
|
-
if (attrInfo?.isLinkMergedWithParent()) {
|
|
176
|
-
// 和父亲合并了,应该用父亲的 alias 和 表上用于记录关系 id 的 field
|
|
177
|
-
const { alias: parentAlias, table: parentTable } = stack.at(-2);
|
|
178
|
-
return [parentAlias, attrInfo.linkField, parentTable];
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
// isolated。应该用关系表上的记录 id 的 source/target 字段
|
|
182
|
-
const linkInfoRecord = attrInfo.getLinkInfo().record;
|
|
183
|
-
const fieldName = attrInfo?.isLinkManyToManySymmetric() ?
|
|
184
|
-
(attrInfo?.symmetricDirection === 'source' ? linkInfoRecord?.attributes.target.field : linkInfoRecord?.attributes.source.field) :
|
|
185
|
-
(attrInfo.isRecordSource() ? linkInfoRecord?.attributes.target.field : linkInfoRecord?.attributes.source.field);
|
|
186
|
-
return [linkAlias, fieldName, linkTable];
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
const fieldName = record.attributes[this.getAttributeAndSymmetricDirection(attributeName)[0]].field;
|
|
191
|
-
return [alias, fieldName, table];
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
findManyToManySymmetricPath(namePath) {
|
|
195
|
-
const result = [namePath[0]];
|
|
196
|
-
let found = false;
|
|
197
|
-
// 注意是从 1 开始的。
|
|
198
|
-
for (let i = 1; i < namePath.length; i++) {
|
|
199
|
-
result.push(namePath[i]);
|
|
200
|
-
const info = this.getInfoByPath(namePath.slice(0, i + 1));
|
|
201
|
-
if (info?.isRecord && info.isLinkManyToManySymmetric()) {
|
|
202
|
-
found = true;
|
|
203
|
-
break;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
// 用 found 来判断,这样即使是最后一个也算找到了。
|
|
207
|
-
return found ? result : undefined;
|
|
208
|
-
}
|
|
209
|
-
spawnManyToManySymmetricPath(namePath) {
|
|
210
|
-
const foundPath = this.findManyToManySymmetricPath(namePath);
|
|
211
|
-
if (!foundPath)
|
|
212
|
-
return undefined;
|
|
213
|
-
const head = foundPath.slice(0, -1);
|
|
214
|
-
const splitPoint = foundPath.at(-1);
|
|
215
|
-
const rest = namePath.slice(foundPath.length, Infinity);
|
|
216
|
-
return [
|
|
217
|
-
[...head, `${splitPoint}:source`, ...rest],
|
|
218
|
-
[...head, `${splitPoint}:target`, ...rest],
|
|
219
|
-
];
|
|
220
|
-
}
|
|
221
|
-
getReverseAttribute(entityName, attribute) {
|
|
222
|
-
assert(this.data.records[entityName], `entity ${entityName} not found`);
|
|
223
|
-
const relationName = this.data.records[entityName].attributes[attribute].linkName;
|
|
224
|
-
const relationData = this.data.links[relationName];
|
|
225
|
-
if (relationData.sourceRecord === entityName && relationData.sourceProperty === attribute) {
|
|
226
|
-
return relationData.targetProperty;
|
|
227
|
-
}
|
|
228
|
-
else if (relationData.targetRecord === entityName && relationData.targetProperty === attribute) {
|
|
229
|
-
return relationData.sourceProperty;
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
assert(false, `wrong relation data ${entityName}.${attribute}`);
|
|
233
|
-
return '';
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
groupAttributes(entityName, attributeNames) {
|
|
237
|
-
assert(this.data.records[entityName], `entity ${entityName} not found`);
|
|
238
|
-
const valueAttributes = [];
|
|
239
|
-
const entityIdAttributes = [];
|
|
240
|
-
const entityAttributes = [];
|
|
241
|
-
attributeNames.forEach(attributeName => {
|
|
242
|
-
if (this.data.records[entityName].attributes[attributeName]) {
|
|
243
|
-
const info = this.getInfo(entityName, attributeName);
|
|
244
|
-
if (info.isValue) {
|
|
245
|
-
valueAttributes.push(info);
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
// link record 的 source/target 字段有 field
|
|
249
|
-
// if (info.isLinkSourceRelation()) {
|
|
250
|
-
if (this.data.records[entityName].attributes[attributeName].field) {
|
|
251
|
-
entityIdAttributes.push(info);
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
entityAttributes.push(info);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
return [valueAttributes, entityAttributes, entityIdAttributes];
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=EntityToTableMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToTableMap.js","sourceRoot":"","sources":["../../../src/storage/erstorage/EntityToTableMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { RecordInfo } from "./RecordInfo.js";
|
|
2
|
-
import { assert } from "../utils.js";
|
|
3
|
-
export class LinkInfo {
|
|
4
|
-
constructor(name, data, map) {
|
|
5
|
-
this.name = name;
|
|
6
|
-
this.data = data;
|
|
7
|
-
this.map = map;
|
|
8
|
-
}
|
|
9
|
-
get isManyToOne() {
|
|
10
|
-
return this.data.relType[0] === 'n' && this.data.relType[1] === '1';
|
|
11
|
-
}
|
|
12
|
-
get isManyToMany() {
|
|
13
|
-
return this.data.relType[0] === 'n' && this.data.relType[1] === 'n';
|
|
14
|
-
}
|
|
15
|
-
get isOneToOne() {
|
|
16
|
-
return this.data.relType[0] === '1' && this.data.relType[1] === '1';
|
|
17
|
-
}
|
|
18
|
-
get isOneToMany() {
|
|
19
|
-
return this.data.relType[0] === '1' && this.data.relType[1] === 'n';
|
|
20
|
-
}
|
|
21
|
-
get isXToOne() {
|
|
22
|
-
return this.isManyToOne || this.isOneToOne;
|
|
23
|
-
}
|
|
24
|
-
get isOneToX() {
|
|
25
|
-
return this.isOneToMany || this.isOneToOne;
|
|
26
|
-
}
|
|
27
|
-
get isXToMany() {
|
|
28
|
-
return this.isManyToMany || this.isOneToMany;
|
|
29
|
-
}
|
|
30
|
-
get sourceRecord() {
|
|
31
|
-
return this.data.sourceRecord;
|
|
32
|
-
}
|
|
33
|
-
get sourceRecordInfo() {
|
|
34
|
-
return new RecordInfo(this.data.sourceRecord, this.map);
|
|
35
|
-
}
|
|
36
|
-
get targetRecordInfo() {
|
|
37
|
-
return new RecordInfo(this.data.targetRecord, this.map);
|
|
38
|
-
}
|
|
39
|
-
get targetRecord() {
|
|
40
|
-
return this.data.targetRecord;
|
|
41
|
-
}
|
|
42
|
-
get sourceProperty() {
|
|
43
|
-
return this.data.sourceProperty;
|
|
44
|
-
}
|
|
45
|
-
get targetProperty() {
|
|
46
|
-
return this.data.targetProperty;
|
|
47
|
-
}
|
|
48
|
-
get record() {
|
|
49
|
-
return this.map.getRecord(this.name);
|
|
50
|
-
}
|
|
51
|
-
get recordInfo() {
|
|
52
|
-
return this.map.getRecordInfo(this.name);
|
|
53
|
-
}
|
|
54
|
-
get table() {
|
|
55
|
-
return this.record?.table;
|
|
56
|
-
}
|
|
57
|
-
get isTargetReliance() {
|
|
58
|
-
return this.data.isTargetReliance;
|
|
59
|
-
}
|
|
60
|
-
isMerged() {
|
|
61
|
-
return !!this.data.mergedTo;
|
|
62
|
-
}
|
|
63
|
-
isSourceRelation() {
|
|
64
|
-
return !!this.data.isSourceRelation;
|
|
65
|
-
}
|
|
66
|
-
isMergedToSource() {
|
|
67
|
-
return this.data.mergedTo === 'source';
|
|
68
|
-
}
|
|
69
|
-
isMergedToTarget() {
|
|
70
|
-
return this.data.mergedTo === 'target';
|
|
71
|
-
}
|
|
72
|
-
isCombined() {
|
|
73
|
-
return this.data.mergedTo === 'combined';
|
|
74
|
-
}
|
|
75
|
-
isIsolated() {
|
|
76
|
-
return !this.data.mergedTo;
|
|
77
|
-
}
|
|
78
|
-
isSymmetric() {
|
|
79
|
-
return this.data.sourceRecord === this.data.targetRecord && this.data.sourceProperty === this.data.targetProperty;
|
|
80
|
-
}
|
|
81
|
-
isRelationSource(recordName, attribute) {
|
|
82
|
-
return this.data.sourceRecord === recordName && this.data.sourceProperty === attribute;
|
|
83
|
-
}
|
|
84
|
-
getAttributeName(recordName, attribute) {
|
|
85
|
-
assert(!!recordName && !!attribute, `${recordName}, ${attribute} cannot be empty`);
|
|
86
|
-
return this.isRelationSource(recordName, attribute) ? ['source', 'target'] : ['target', 'source'];
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=LinkInfo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkInfo.js","sourceRoot":"","sources":["../../../src/storage/erstorage/LinkInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,211 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MatchExp.js","sourceRoot":"","sources":["../../../src/storage/erstorage/MatchExp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|