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