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.
Files changed (214) hide show
  1. package/README.md +53 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +4 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/runtime/ActivityCall.d.ts +68 -0
  7. package/dist/runtime/ActivityCall.d.ts.map +1 -0
  8. package/dist/runtime/ActivityCall.js +379 -0
  9. package/dist/runtime/ActivityCall.js.map +1 -0
  10. package/dist/runtime/Controller.d.ts +60 -0
  11. package/dist/runtime/Controller.d.ts.map +1 -0
  12. package/dist/runtime/Controller.js +225 -0
  13. package/dist/runtime/Controller.js.map +1 -0
  14. package/dist/runtime/InteractionCall.d.ts +102 -0
  15. package/dist/runtime/InteractionCall.d.ts.map +1 -0
  16. package/dist/runtime/InteractionCall.js +385 -0
  17. package/dist/runtime/InteractionCall.js.map +1 -0
  18. package/dist/runtime/MonoSystem.d.ts +26 -0
  19. package/dist/runtime/MonoSystem.d.ts.map +1 -0
  20. package/dist/runtime/MonoSystem.js +331 -0
  21. package/dist/runtime/MonoSystem.js.map +1 -0
  22. package/dist/runtime/Mysql.d.ts +35 -0
  23. package/dist/runtime/Mysql.d.ts.map +1 -0
  24. package/dist/runtime/Mysql.js +171 -0
  25. package/dist/runtime/Mysql.js.map +1 -0
  26. package/dist/runtime/PostgreSQL.d.ts +36 -0
  27. package/dist/runtime/PostgreSQL.d.ts.map +1 -0
  28. package/dist/runtime/PostgreSQL.js +172 -0
  29. package/dist/runtime/PostgreSQL.js.map +1 -0
  30. package/dist/runtime/SQLite.d.ts +34 -0
  31. package/dist/runtime/SQLite.d.ts.map +1 -0
  32. package/dist/runtime/SQLite.js +146 -0
  33. package/dist/runtime/SQLite.js.map +1 -0
  34. package/dist/runtime/Scheduler.d.ts +81 -0
  35. package/dist/runtime/Scheduler.d.ts.map +1 -0
  36. package/dist/runtime/Scheduler.js +457 -0
  37. package/dist/runtime/Scheduler.js.map +1 -0
  38. package/dist/runtime/System.d.ts +312 -0
  39. package/dist/runtime/System.d.ts.map +1 -0
  40. package/dist/runtime/System.js +90 -0
  41. package/dist/runtime/System.js.map +1 -0
  42. package/dist/runtime/asyncInteractionContext.d.ts +3 -0
  43. package/dist/runtime/asyncInteractionContext.d.ts.map +1 -0
  44. package/dist/runtime/asyncInteractionContext.js +3 -0
  45. package/dist/runtime/asyncInteractionContext.js.map +1 -0
  46. package/dist/runtime/boolExpression.d.ts +23 -0
  47. package/dist/runtime/boolExpression.d.ts.map +1 -0
  48. package/dist/runtime/boolExpression.js +43 -0
  49. package/dist/runtime/boolExpression.js.map +1 -0
  50. package/dist/runtime/computedDataHandles/Any.d.ts +52 -0
  51. package/dist/runtime/computedDataHandles/Any.d.ts.map +1 -0
  52. package/dist/runtime/computedDataHandles/Any.js +152 -0
  53. package/dist/runtime/computedDataHandles/Any.js.map +1 -0
  54. package/dist/runtime/computedDataHandles/Computation.d.ts +108 -0
  55. package/dist/runtime/computedDataHandles/Computation.d.ts.map +1 -0
  56. package/dist/runtime/computedDataHandles/Computation.js +49 -0
  57. package/dist/runtime/computedDataHandles/Computation.js.map +1 -0
  58. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +42 -0
  59. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +1 -0
  60. package/dist/runtime/computedDataHandles/ComputedDataHandle.js +4 -0
  61. package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +1 -0
  62. package/dist/runtime/computedDataHandles/Count.d.ts +45 -0
  63. package/dist/runtime/computedDataHandles/Count.d.ts.map +1 -0
  64. package/dist/runtime/computedDataHandles/Count.js +85 -0
  65. package/dist/runtime/computedDataHandles/Count.js.map +1 -0
  66. package/dist/runtime/computedDataHandles/Every.d.ts +56 -0
  67. package/dist/runtime/computedDataHandles/Every.d.ts.map +1 -0
  68. package/dist/runtime/computedDataHandles/Every.js +178 -0
  69. package/dist/runtime/computedDataHandles/Every.js.map +1 -0
  70. package/dist/runtime/computedDataHandles/StateMachine.d.ts +74 -0
  71. package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +1 -0
  72. package/dist/runtime/computedDataHandles/StateMachine.js +180 -0
  73. package/dist/runtime/computedDataHandles/StateMachine.js.map +1 -0
  74. package/dist/runtime/computedDataHandles/Transform.d.ts +26 -0
  75. package/dist/runtime/computedDataHandles/Transform.d.ts.map +1 -0
  76. package/dist/runtime/computedDataHandles/Transform.js +106 -0
  77. package/dist/runtime/computedDataHandles/Transform.js.map +1 -0
  78. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +57 -0
  79. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +1 -0
  80. package/dist/runtime/computedDataHandles/TransitionFinder.js +40 -0
  81. package/dist/runtime/computedDataHandles/TransitionFinder.js.map +1 -0
  82. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +57 -0
  83. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +1 -0
  84. package/dist/runtime/computedDataHandles/WeightedSummation.js +146 -0
  85. package/dist/runtime/computedDataHandles/WeightedSummation.js.map +1 -0
  86. package/dist/runtime/computedDataHandles/index.d.ts +7 -0
  87. package/dist/runtime/computedDataHandles/index.d.ts.map +1 -0
  88. package/dist/runtime/computedDataHandles/index.js +7 -0
  89. package/dist/runtime/computedDataHandles/index.js.map +1 -0
  90. package/dist/runtime/index.d.ts +15 -0
  91. package/dist/runtime/index.d.ts.map +1 -0
  92. package/dist/runtime/index.js +15 -0
  93. package/dist/runtime/index.js.map +1 -0
  94. package/dist/runtime/server.d.ts +35 -0
  95. package/dist/runtime/server.d.ts.map +1 -0
  96. package/dist/runtime/server.js +171 -0
  97. package/dist/runtime/server.js.map +1 -0
  98. package/dist/runtime/types/boolExpression.d.ts +22 -0
  99. package/dist/runtime/types/boolExpression.d.ts.map +1 -0
  100. package/dist/runtime/types/boolExpression.js +6 -0
  101. package/dist/runtime/types/boolExpression.js.map +1 -0
  102. package/dist/runtime/util.d.ts +10 -0
  103. package/dist/runtime/util.d.ts.map +1 -0
  104. package/dist/runtime/util.js +39 -0
  105. package/dist/runtime/util.js.map +1 -0
  106. package/dist/shared/BoolExp.d.ts +97 -0
  107. package/dist/shared/BoolExp.d.ts.map +1 -0
  108. package/dist/shared/BoolExp.js +252 -0
  109. package/dist/shared/BoolExp.js.map +1 -0
  110. package/dist/shared/activity/Activity.d.ts +465 -0
  111. package/dist/shared/activity/Activity.d.ts.map +1 -0
  112. package/dist/shared/activity/Activity.js +264 -0
  113. package/dist/shared/activity/Activity.js.map +1 -0
  114. package/dist/shared/activity/Condition.d.ts +75 -0
  115. package/dist/shared/activity/Condition.d.ts.map +1 -0
  116. package/dist/shared/activity/Condition.js +51 -0
  117. package/dist/shared/activity/Condition.js.map +1 -0
  118. package/dist/shared/activity/Data.d.ts +115 -0
  119. package/dist/shared/activity/Data.d.ts.map +1 -0
  120. package/dist/shared/activity/Data.js +89 -0
  121. package/dist/shared/activity/Data.js.map +1 -0
  122. package/dist/shared/attributive.d.ts +93 -0
  123. package/dist/shared/attributive.d.ts.map +1 -0
  124. package/dist/shared/attributive.js +59 -0
  125. package/dist/shared/attributive.js.map +1 -0
  126. package/dist/shared/computed.d.ts +607 -0
  127. package/dist/shared/computed.d.ts.map +1 -0
  128. package/dist/shared/computed.js +202 -0
  129. package/dist/shared/computed.js.map +1 -0
  130. package/dist/shared/createClass.d.ts +102 -0
  131. package/dist/shared/createClass.d.ts.map +1 -0
  132. package/dist/shared/createClass.js +276 -0
  133. package/dist/shared/createClass.js.map +1 -0
  134. package/dist/shared/dictionary/Dictionary.d.ts +40 -0
  135. package/dist/shared/dictionary/Dictionary.d.ts.map +1 -0
  136. package/dist/shared/dictionary/Dictionary.js +51 -0
  137. package/dist/shared/dictionary/Dictionary.js.map +1 -0
  138. package/dist/shared/entity/Entity.d.ts +149 -0
  139. package/dist/shared/entity/Entity.d.ts.map +1 -0
  140. package/dist/shared/entity/Entity.js +226 -0
  141. package/dist/shared/entity/Entity.js.map +1 -0
  142. package/dist/shared/index.d.ts +11 -0
  143. package/dist/shared/index.d.ts.map +1 -0
  144. package/dist/shared/index.js +11 -0
  145. package/dist/shared/index.js.map +1 -0
  146. package/dist/shared/user/User.d.ts +21 -0
  147. package/dist/shared/user/User.d.ts.map +1 -0
  148. package/dist/shared/user/User.js +11 -0
  149. package/dist/shared/user/User.js.map +1 -0
  150. package/dist/shared/utils.d.ts +11 -0
  151. package/dist/shared/utils.d.ts.map +1 -0
  152. package/dist/shared/utils.js +19 -0
  153. package/dist/shared/utils.js.map +1 -0
  154. package/dist/storage/erstorage/AttributeInfo.d.ts +40 -0
  155. package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -0
  156. package/dist/storage/erstorage/AttributeInfo.js +147 -0
  157. package/dist/storage/erstorage/AttributeInfo.js.map +1 -0
  158. package/dist/storage/erstorage/AttributeQuery.d.ts +33 -0
  159. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -0
  160. package/dist/storage/erstorage/AttributeQuery.js +190 -0
  161. package/dist/storage/erstorage/AttributeQuery.js.map +1 -0
  162. package/dist/storage/erstorage/EntityQueryHandle.d.ts +29 -0
  163. package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -0
  164. package/dist/storage/erstorage/EntityQueryHandle.js +78 -0
  165. package/dist/storage/erstorage/EntityQueryHandle.js.map +1 -0
  166. package/dist/storage/erstorage/EntityToTableMap.d.ts +85 -0
  167. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -0
  168. package/dist/storage/erstorage/EntityToTableMap.js +262 -0
  169. package/dist/storage/erstorage/EntityToTableMap.js.map +1 -0
  170. package/dist/storage/erstorage/LinkInfo.d.ts +35 -0
  171. package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -0
  172. package/dist/storage/erstorage/LinkInfo.js +89 -0
  173. package/dist/storage/erstorage/LinkInfo.js.map +1 -0
  174. package/dist/storage/erstorage/MatchExp.d.ts +37 -0
  175. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -0
  176. package/dist/storage/erstorage/MatchExp.js +211 -0
  177. package/dist/storage/erstorage/MatchExp.js.map +1 -0
  178. package/dist/storage/erstorage/Modifier.d.ts +23 -0
  179. package/dist/storage/erstorage/Modifier.d.ts.map +1 -0
  180. package/dist/storage/erstorage/Modifier.js +24 -0
  181. package/dist/storage/erstorage/Modifier.js.map +1 -0
  182. package/dist/storage/erstorage/NewRecordData.d.ts +42 -0
  183. package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -0
  184. package/dist/storage/erstorage/NewRecordData.js +178 -0
  185. package/dist/storage/erstorage/NewRecordData.js.map +1 -0
  186. package/dist/storage/erstorage/RecordInfo.d.ts +26 -0
  187. package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -0
  188. package/dist/storage/erstorage/RecordInfo.js +111 -0
  189. package/dist/storage/erstorage/RecordInfo.js.map +1 -0
  190. package/dist/storage/erstorage/RecordQuery.d.ts +73 -0
  191. package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -0
  192. package/dist/storage/erstorage/RecordQuery.js +158 -0
  193. package/dist/storage/erstorage/RecordQuery.js.map +1 -0
  194. package/dist/storage/erstorage/RecordQueryAgent.d.ts +84 -0
  195. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -0
  196. package/dist/storage/erstorage/RecordQueryAgent.js +1130 -0
  197. package/dist/storage/erstorage/RecordQueryAgent.js.map +1 -0
  198. package/dist/storage/erstorage/Setup.d.ts +49 -0
  199. package/dist/storage/erstorage/Setup.d.ts.map +1 -0
  200. package/dist/storage/erstorage/Setup.js +400 -0
  201. package/dist/storage/erstorage/Setup.js.map +1 -0
  202. package/dist/storage/erstorage/util.d.ts +6 -0
  203. package/dist/storage/erstorage/util.d.ts.map +1 -0
  204. package/dist/storage/erstorage/util.js +25 -0
  205. package/dist/storage/erstorage/util.js.map +1 -0
  206. package/dist/storage/index.d.ts +13 -0
  207. package/dist/storage/index.d.ts.map +1 -0
  208. package/dist/storage/index.js +13 -0
  209. package/dist/storage/index.js.map +1 -0
  210. package/dist/storage/utils.d.ts +10 -0
  211. package/dist/storage/utils.d.ts.map +1 -0
  212. package/dist/storage/utils.js +48 -0
  213. package/dist/storage/utils.js.map +1 -0
  214. 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":"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"}
@@ -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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"}