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.
Files changed (329) hide show
  1. package/agent/.claude/agents/code-generation-handler.md +598 -0
  2. package/agent/.claude/agents/computation-generation-handler.md +290 -0
  3. package/agent/.claude/agents/implement-design-handler.md +179 -0
  4. package/agent/.claude/agents/permission-generation-handler.md +202 -0
  5. package/agent/.claude/agents/requirements-analysis-handler-bak.md +530 -0
  6. package/agent/.claude/agents/requirements-analysis-handler.md +720 -0
  7. package/agent/.claude/settings.local.json +46 -0
  8. package/agent/CLAUDE.md +72 -0
  9. package/dist/index.js +10508 -4
  10. package/dist/index.js.map +1 -1
  11. package/dist/runtime/ComputationSourceMap.d.ts +117 -0
  12. package/dist/runtime/ComputationSourceMap.d.ts.map +1 -0
  13. package/dist/runtime/Controller.d.ts +37 -26
  14. package/dist/runtime/Controller.d.ts.map +1 -1
  15. package/dist/runtime/ExternalSynchronizer.d.ts +6 -0
  16. package/dist/runtime/ExternalSynchronizer.d.ts.map +1 -0
  17. package/dist/runtime/MonoSystem.d.ts +29 -17
  18. package/dist/runtime/MonoSystem.d.ts.map +1 -1
  19. package/dist/runtime/Mysql.d.ts +2 -2
  20. package/dist/runtime/PGLite.d.ts +35 -0
  21. package/dist/runtime/PGLite.d.ts.map +1 -0
  22. package/dist/runtime/PostgreSQL.d.ts +2 -2
  23. package/dist/runtime/SQLite.d.ts +3 -3
  24. package/dist/runtime/SQLite.d.ts.map +1 -1
  25. package/dist/runtime/Scheduler.d.ts +28 -61
  26. package/dist/runtime/Scheduler.d.ts.map +1 -1
  27. package/dist/runtime/System.d.ts +18 -224
  28. package/dist/runtime/System.d.ts.map +1 -1
  29. package/dist/runtime/{ActivityCall.d.ts → activity/ActivityCall.d.ts} +6 -7
  30. package/dist/runtime/activity/ActivityCall.d.ts.map +1 -0
  31. package/dist/runtime/activity/ActivityManager.d.ts +44 -0
  32. package/dist/runtime/activity/ActivityManager.d.ts.map +1 -0
  33. package/dist/runtime/{InteractionCall.d.ts → activity/InteractionCall.d.ts} +28 -41
  34. package/dist/runtime/activity/InteractionCall.d.ts.map +1 -0
  35. package/dist/runtime/computations/Any.d.ts +71 -0
  36. package/dist/runtime/computations/Any.d.ts.map +1 -0
  37. package/dist/runtime/computations/Average.d.ts +69 -0
  38. package/dist/runtime/computations/Average.d.ts.map +1 -0
  39. package/dist/runtime/computations/Computation.d.ts +138 -0
  40. package/dist/runtime/computations/Computation.d.ts.map +1 -0
  41. package/dist/runtime/computations/Count.d.ts +73 -0
  42. package/dist/runtime/computations/Count.d.ts.map +1 -0
  43. package/dist/runtime/computations/Custom.d.ts +45 -0
  44. package/dist/runtime/computations/Custom.d.ts.map +1 -0
  45. package/dist/runtime/computations/Every.d.ts +74 -0
  46. package/dist/runtime/computations/Every.d.ts.map +1 -0
  47. package/dist/runtime/computations/MathResolver.d.ts +60 -0
  48. package/dist/runtime/computations/MathResolver.d.ts.map +1 -0
  49. package/dist/runtime/computations/RealTime.d.ts +66 -0
  50. package/dist/runtime/computations/RealTime.d.ts.map +1 -0
  51. package/dist/runtime/{computedDataHandles → computations}/StateMachine.d.ts +31 -22
  52. package/dist/runtime/computations/StateMachine.d.ts.map +1 -0
  53. package/dist/runtime/computations/Summation.d.ts +66 -0
  54. package/dist/runtime/computations/Summation.d.ts.map +1 -0
  55. package/dist/runtime/computations/Transform.d.ts +29 -0
  56. package/dist/runtime/computations/Transform.d.ts.map +1 -0
  57. package/dist/runtime/computations/TransitionFinder.d.ts +11 -0
  58. package/dist/runtime/computations/TransitionFinder.d.ts.map +1 -0
  59. package/dist/runtime/computations/WeightedSummation.d.ts +71 -0
  60. package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -0
  61. package/dist/runtime/computations/index.d.ts +22 -0
  62. package/dist/runtime/computations/index.d.ts.map +1 -0
  63. package/dist/runtime/errors/ActivityErrors.d.ts +40 -0
  64. package/dist/runtime/errors/ActivityErrors.d.ts.map +1 -0
  65. package/dist/runtime/errors/ComputationErrors.d.ts +61 -0
  66. package/dist/runtime/errors/ComputationErrors.d.ts.map +1 -0
  67. package/dist/runtime/errors/ConditionErrors.d.ts +33 -0
  68. package/dist/runtime/errors/ConditionErrors.d.ts.map +1 -0
  69. package/dist/runtime/errors/FrameworkError.d.ts +77 -0
  70. package/dist/runtime/errors/FrameworkError.d.ts.map +1 -0
  71. package/dist/runtime/errors/InteractionErrors.d.ts +21 -0
  72. package/dist/runtime/errors/InteractionErrors.d.ts.map +1 -0
  73. package/dist/runtime/errors/SystemErrors.d.ts +16 -0
  74. package/dist/runtime/errors/SystemErrors.d.ts.map +1 -0
  75. package/dist/runtime/errors/index.d.ts +37 -0
  76. package/dist/runtime/errors/index.d.ts.map +1 -0
  77. package/dist/runtime/index.d.ts +9 -7
  78. package/dist/runtime/index.d.ts.map +1 -1
  79. package/dist/shared/Action.d.ts +38 -0
  80. package/dist/shared/Action.d.ts.map +1 -0
  81. package/dist/shared/Activity.d.ts +178 -0
  82. package/dist/shared/Activity.d.ts.map +1 -0
  83. package/dist/shared/Any.d.ts +82 -0
  84. package/dist/shared/Any.d.ts.map +1 -0
  85. package/dist/shared/Attributive.d.ts +92 -0
  86. package/dist/shared/Attributive.d.ts.map +1 -0
  87. package/dist/shared/Average.d.ts +59 -0
  88. package/dist/shared/Average.d.ts.map +1 -0
  89. package/dist/shared/BoolExp.d.ts +139 -63
  90. package/dist/shared/BoolExp.d.ts.map +1 -1
  91. package/dist/shared/Computation.d.ts +23 -0
  92. package/dist/shared/Computation.d.ts.map +1 -0
  93. package/dist/shared/Condition.d.ts +43 -0
  94. package/dist/shared/Condition.d.ts.map +1 -0
  95. package/dist/shared/Conditions.d.ts +38 -0
  96. package/dist/shared/Conditions.d.ts.map +1 -0
  97. package/dist/shared/Count.d.ts +77 -0
  98. package/dist/shared/Count.d.ts.map +1 -0
  99. package/dist/shared/Custom.d.ts +108 -0
  100. package/dist/shared/Custom.d.ts.map +1 -0
  101. package/dist/shared/Data.d.ts +121 -0
  102. package/dist/shared/Data.d.ts.map +1 -0
  103. package/dist/shared/DataAttributives.d.ts +38 -0
  104. package/dist/shared/DataAttributives.d.ts.map +1 -0
  105. package/dist/shared/Entity.d.ts +96 -0
  106. package/dist/shared/Entity.d.ts.map +1 -0
  107. package/dist/shared/Event.d.ts +36 -0
  108. package/dist/shared/Event.d.ts.map +1 -0
  109. package/dist/shared/Every.d.ts +85 -0
  110. package/dist/shared/Every.d.ts.map +1 -0
  111. package/dist/shared/Gateway.d.ts +36 -0
  112. package/dist/shared/Gateway.d.ts.map +1 -0
  113. package/dist/shared/Interaction.d.ts +108 -0
  114. package/dist/shared/Interaction.d.ts.map +1 -0
  115. package/dist/shared/Payload.d.ts +39 -0
  116. package/dist/shared/Payload.d.ts.map +1 -0
  117. package/dist/shared/PayloadItem.d.ts +85 -0
  118. package/dist/shared/PayloadItem.d.ts.map +1 -0
  119. package/dist/shared/Property.d.ts +83 -0
  120. package/dist/shared/Property.d.ts.map +1 -0
  121. package/dist/shared/RealDictionary.d.ts +94 -0
  122. package/dist/shared/RealDictionary.d.ts.map +1 -0
  123. package/dist/shared/RealTime.d.ts +66 -0
  124. package/dist/shared/RealTime.d.ts.map +1 -0
  125. package/dist/shared/RefContainer.d.ts +89 -0
  126. package/dist/shared/RefContainer.d.ts.map +1 -0
  127. package/dist/shared/Relation.d.ts +140 -0
  128. package/dist/shared/Relation.d.ts.map +1 -0
  129. package/dist/shared/SideEffect.d.ts +45 -0
  130. package/dist/shared/SideEffect.d.ts.map +1 -0
  131. package/dist/shared/StateMachine.d.ts +55 -0
  132. package/dist/shared/StateMachine.d.ts.map +1 -0
  133. package/dist/shared/StateNode.d.ts +45 -0
  134. package/dist/shared/StateNode.d.ts.map +1 -0
  135. package/dist/shared/StateTransfer.d.ts +63 -0
  136. package/dist/shared/StateTransfer.d.ts.map +1 -0
  137. package/dist/shared/Summation.d.ts +59 -0
  138. package/dist/shared/Summation.d.ts.map +1 -0
  139. package/dist/shared/Transform.d.ts +54 -0
  140. package/dist/shared/Transform.d.ts.map +1 -0
  141. package/dist/shared/User.d.ts +10 -0
  142. package/dist/shared/User.d.ts.map +1 -0
  143. package/dist/shared/WeightedSummation.d.ts +82 -0
  144. package/dist/shared/WeightedSummation.d.ts.map +1 -0
  145. package/dist/shared/index.d.ts +35 -9
  146. package/dist/shared/index.d.ts.map +1 -1
  147. package/dist/shared/init.d.ts +3 -0
  148. package/dist/shared/init.d.ts.map +1 -0
  149. package/dist/shared/interfaces.d.ts +72 -0
  150. package/dist/shared/interfaces.d.ts.map +1 -0
  151. package/dist/shared/types.d.ts +77 -0
  152. package/dist/shared/types.d.ts.map +1 -0
  153. package/dist/shared/utils.d.ts +16 -10
  154. package/dist/shared/utils.d.ts.map +1 -1
  155. package/dist/storage/erstorage/AttributeInfo.d.ts +8 -3
  156. package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -1
  157. package/dist/storage/erstorage/AttributeQuery.d.ts +4 -3
  158. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
  159. package/dist/storage/erstorage/EntityQueryHandle.d.ts +18 -17
  160. package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -1
  161. package/dist/storage/erstorage/EntityToTableMap.d.ts +27 -5
  162. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
  163. package/dist/storage/erstorage/FilteredEntityManager.d.ts +70 -0
  164. package/dist/storage/erstorage/FilteredEntityManager.d.ts.map +1 -0
  165. package/dist/storage/erstorage/LinkInfo.d.ts +10 -3
  166. package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -1
  167. package/dist/storage/erstorage/MatchExp.d.ts +19 -9
  168. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
  169. package/dist/storage/erstorage/MergedItemProcessor.d.ts +25 -0
  170. package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -0
  171. package/dist/storage/erstorage/Modifier.d.ts +1 -1
  172. package/dist/storage/erstorage/NewRecordData.d.ts +16 -9
  173. package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -1
  174. package/dist/storage/erstorage/RecordInfo.d.ts +11 -2
  175. package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -1
  176. package/dist/storage/erstorage/RecordQuery.d.ts +9 -8
  177. package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -1
  178. package/dist/storage/erstorage/RecordQueryAgent.d.ts +26 -13
  179. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
  180. package/dist/storage/erstorage/Setup.d.ts +49 -11
  181. package/dist/storage/erstorage/Setup.d.ts.map +1 -1
  182. package/dist/storage/erstorage/util.d.ts.map +1 -1
  183. package/package.json +44 -20
  184. package/README.md +0 -53
  185. package/dist/runtime/ActivityCall.d.ts.map +0 -1
  186. package/dist/runtime/ActivityCall.js +0 -379
  187. package/dist/runtime/ActivityCall.js.map +0 -1
  188. package/dist/runtime/Controller.js +0 -225
  189. package/dist/runtime/Controller.js.map +0 -1
  190. package/dist/runtime/InteractionCall.d.ts.map +0 -1
  191. package/dist/runtime/InteractionCall.js +0 -385
  192. package/dist/runtime/InteractionCall.js.map +0 -1
  193. package/dist/runtime/MonoSystem.js +0 -331
  194. package/dist/runtime/MonoSystem.js.map +0 -1
  195. package/dist/runtime/Mysql.js +0 -171
  196. package/dist/runtime/Mysql.js.map +0 -1
  197. package/dist/runtime/PostgreSQL.js +0 -172
  198. package/dist/runtime/PostgreSQL.js.map +0 -1
  199. package/dist/runtime/SQLite.js +0 -146
  200. package/dist/runtime/SQLite.js.map +0 -1
  201. package/dist/runtime/Scheduler.js +0 -457
  202. package/dist/runtime/Scheduler.js.map +0 -1
  203. package/dist/runtime/System.js +0 -90
  204. package/dist/runtime/System.js.map +0 -1
  205. package/dist/runtime/asyncInteractionContext.js +0 -3
  206. package/dist/runtime/asyncInteractionContext.js.map +0 -1
  207. package/dist/runtime/boolExpression.js +0 -43
  208. package/dist/runtime/boolExpression.js.map +0 -1
  209. package/dist/runtime/computedDataHandles/Any.d.ts +0 -52
  210. package/dist/runtime/computedDataHandles/Any.d.ts.map +0 -1
  211. package/dist/runtime/computedDataHandles/Any.js +0 -152
  212. package/dist/runtime/computedDataHandles/Any.js.map +0 -1
  213. package/dist/runtime/computedDataHandles/Computation.d.ts +0 -108
  214. package/dist/runtime/computedDataHandles/Computation.d.ts.map +0 -1
  215. package/dist/runtime/computedDataHandles/Computation.js +0 -49
  216. package/dist/runtime/computedDataHandles/Computation.js.map +0 -1
  217. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +0 -42
  218. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +0 -1
  219. package/dist/runtime/computedDataHandles/ComputedDataHandle.js +0 -4
  220. package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +0 -1
  221. package/dist/runtime/computedDataHandles/Count.d.ts +0 -45
  222. package/dist/runtime/computedDataHandles/Count.d.ts.map +0 -1
  223. package/dist/runtime/computedDataHandles/Count.js +0 -85
  224. package/dist/runtime/computedDataHandles/Count.js.map +0 -1
  225. package/dist/runtime/computedDataHandles/Every.d.ts +0 -56
  226. package/dist/runtime/computedDataHandles/Every.d.ts.map +0 -1
  227. package/dist/runtime/computedDataHandles/Every.js +0 -178
  228. package/dist/runtime/computedDataHandles/Every.js.map +0 -1
  229. package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +0 -1
  230. package/dist/runtime/computedDataHandles/StateMachine.js +0 -180
  231. package/dist/runtime/computedDataHandles/StateMachine.js.map +0 -1
  232. package/dist/runtime/computedDataHandles/Transform.d.ts +0 -26
  233. package/dist/runtime/computedDataHandles/Transform.d.ts.map +0 -1
  234. package/dist/runtime/computedDataHandles/Transform.js +0 -106
  235. package/dist/runtime/computedDataHandles/Transform.js.map +0 -1
  236. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +0 -57
  237. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +0 -1
  238. package/dist/runtime/computedDataHandles/TransitionFinder.js +0 -40
  239. package/dist/runtime/computedDataHandles/TransitionFinder.js.map +0 -1
  240. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +0 -57
  241. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +0 -1
  242. package/dist/runtime/computedDataHandles/WeightedSummation.js +0 -146
  243. package/dist/runtime/computedDataHandles/WeightedSummation.js.map +0 -1
  244. package/dist/runtime/computedDataHandles/index.d.ts +0 -7
  245. package/dist/runtime/computedDataHandles/index.d.ts.map +0 -1
  246. package/dist/runtime/computedDataHandles/index.js +0 -7
  247. package/dist/runtime/computedDataHandles/index.js.map +0 -1
  248. package/dist/runtime/index.js +0 -15
  249. package/dist/runtime/index.js.map +0 -1
  250. package/dist/runtime/server.d.ts +0 -35
  251. package/dist/runtime/server.d.ts.map +0 -1
  252. package/dist/runtime/server.js +0 -171
  253. package/dist/runtime/server.js.map +0 -1
  254. package/dist/runtime/types/boolExpression.js +0 -6
  255. package/dist/runtime/types/boolExpression.js.map +0 -1
  256. package/dist/runtime/util.js +0 -39
  257. package/dist/runtime/util.js.map +0 -1
  258. package/dist/shared/BoolExp.js +0 -252
  259. package/dist/shared/BoolExp.js.map +0 -1
  260. package/dist/shared/activity/Activity.d.ts +0 -465
  261. package/dist/shared/activity/Activity.d.ts.map +0 -1
  262. package/dist/shared/activity/Activity.js +0 -264
  263. package/dist/shared/activity/Activity.js.map +0 -1
  264. package/dist/shared/activity/Condition.d.ts +0 -75
  265. package/dist/shared/activity/Condition.d.ts.map +0 -1
  266. package/dist/shared/activity/Condition.js +0 -51
  267. package/dist/shared/activity/Condition.js.map +0 -1
  268. package/dist/shared/activity/Data.d.ts +0 -115
  269. package/dist/shared/activity/Data.d.ts.map +0 -1
  270. package/dist/shared/activity/Data.js +0 -89
  271. package/dist/shared/activity/Data.js.map +0 -1
  272. package/dist/shared/attributive.d.ts +0 -93
  273. package/dist/shared/attributive.d.ts.map +0 -1
  274. package/dist/shared/attributive.js +0 -59
  275. package/dist/shared/attributive.js.map +0 -1
  276. package/dist/shared/computed.d.ts +0 -607
  277. package/dist/shared/computed.d.ts.map +0 -1
  278. package/dist/shared/computed.js +0 -202
  279. package/dist/shared/computed.js.map +0 -1
  280. package/dist/shared/createClass.d.ts +0 -102
  281. package/dist/shared/createClass.d.ts.map +0 -1
  282. package/dist/shared/createClass.js +0 -276
  283. package/dist/shared/createClass.js.map +0 -1
  284. package/dist/shared/dictionary/Dictionary.d.ts +0 -40
  285. package/dist/shared/dictionary/Dictionary.d.ts.map +0 -1
  286. package/dist/shared/dictionary/Dictionary.js +0 -51
  287. package/dist/shared/dictionary/Dictionary.js.map +0 -1
  288. package/dist/shared/entity/Entity.d.ts +0 -149
  289. package/dist/shared/entity/Entity.d.ts.map +0 -1
  290. package/dist/shared/entity/Entity.js +0 -226
  291. package/dist/shared/entity/Entity.js.map +0 -1
  292. package/dist/shared/index.js +0 -11
  293. package/dist/shared/index.js.map +0 -1
  294. package/dist/shared/user/User.d.ts +0 -21
  295. package/dist/shared/user/User.d.ts.map +0 -1
  296. package/dist/shared/user/User.js +0 -11
  297. package/dist/shared/user/User.js.map +0 -1
  298. package/dist/shared/utils.js +0 -19
  299. package/dist/shared/utils.js.map +0 -1
  300. package/dist/storage/erstorage/AttributeInfo.js +0 -147
  301. package/dist/storage/erstorage/AttributeInfo.js.map +0 -1
  302. package/dist/storage/erstorage/AttributeQuery.js +0 -190
  303. package/dist/storage/erstorage/AttributeQuery.js.map +0 -1
  304. package/dist/storage/erstorage/EntityQueryHandle.js +0 -78
  305. package/dist/storage/erstorage/EntityQueryHandle.js.map +0 -1
  306. package/dist/storage/erstorage/EntityToTableMap.js +0 -262
  307. package/dist/storage/erstorage/EntityToTableMap.js.map +0 -1
  308. package/dist/storage/erstorage/LinkInfo.js +0 -89
  309. package/dist/storage/erstorage/LinkInfo.js.map +0 -1
  310. package/dist/storage/erstorage/MatchExp.js +0 -211
  311. package/dist/storage/erstorage/MatchExp.js.map +0 -1
  312. package/dist/storage/erstorage/Modifier.js +0 -24
  313. package/dist/storage/erstorage/Modifier.js.map +0 -1
  314. package/dist/storage/erstorage/NewRecordData.js +0 -178
  315. package/dist/storage/erstorage/NewRecordData.js.map +0 -1
  316. package/dist/storage/erstorage/RecordInfo.js +0 -111
  317. package/dist/storage/erstorage/RecordInfo.js.map +0 -1
  318. package/dist/storage/erstorage/RecordQuery.js +0 -158
  319. package/dist/storage/erstorage/RecordQuery.js.map +0 -1
  320. package/dist/storage/erstorage/RecordQueryAgent.js +0 -1130
  321. package/dist/storage/erstorage/RecordQueryAgent.js.map +0 -1
  322. package/dist/storage/erstorage/Setup.js +0 -400
  323. package/dist/storage/erstorage/Setup.js.map +0 -1
  324. package/dist/storage/erstorage/util.js +0 -25
  325. package/dist/storage/erstorage/util.js.map +0 -1
  326. package/dist/storage/index.js +0 -13
  327. package/dist/storage/index.js.map +0 -1
  328. package/dist/storage/utils.js +0 -48
  329. 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":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAyF7C,MAAM,OAAO,gBAAgB;IACzB,YAAmB,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;IAAG,CAAC;IACpC,cAAc,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAA;IAC9C,CAAC;IACD,SAAS,CAAC,UAAiB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACxC,CAAC;IACD,iCAAiC,CAAC,gBAAuB;QACrD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAgC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IACtI,CAAC;IACD,gBAAgB,CAAC,UAAiB,EAAE,aAAqB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7G,CAAC;IACD,aAAa,CAAC,UAAiB;QAC3B,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,CAAC,UAAkB,EAAE,SAAiB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1E,MAAM,CAAC,CAAC,CAAC,MAAM,EACX,0BAA0B,SAAS,SAAS,UAAU,kBAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,CACpK,CAAA;QACD,OAAO,MAAO,CAAA;IAClB,CAAC;IACD,WAAW,CAAC,UAAkB,EAAE,YAAoB;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,MAAM,QAAQ,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,SAAS,CAAqB,CAAC,QAAQ,CAAA;QAClG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,wBAAwB,UAAU,IAAI,SAAS,EAAE,CAAC,CAAA;QACrE,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAClE,CAAC;IACD,iBAAiB,CAAC,QAAgB;QAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,oBAAoB,QAAQ,EAAE,CAAC,CAAA;QACnE,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAClE,CAAC;IAED,aAAa,CAAC,QAAkB;QAC5B,MAAM,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,GAAG,QAAQ,CAAA;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,UAAU,YAAY,CAAC,CAAA;QACvE,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,CAAC,CAAA;QAC5E,IAAI,aAAa,GAAG,UAAU,CAAA;QAC9B,IAAI,YAA8B,CAAA;QAClC,IAAI,aAA+B,CAAA;QACnC,IAAI,aAAuD,CAAA;QAE3D,IAAI,mBAA0B,CAAA;QAC9B,IAAI,sBAAsB,CAAA;QAC1B,MAAM,KAAK,GAAG,EAAE,CAAA;QAChB,OAAM,mBAAmB,GAAG,eAAe,CAAC,KAAK,EAAG,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAC/B,uBAAuB;YACvB,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,CAAA;YAC1G,sBAAsB,GAAG,kBAAkB,CAAA;YAE3C,YAAY;YACZ,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,EAAE,8BAA8B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC1F,YAAY,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAa,CAAC,CAAC,UAAU,CAAC,aAAc,CAAqB,CAAC,QAAQ,CAAA;gBACxG,aAAa,GAAG,SAAS,CAAA;gBACzB,aAAa,GAAI,aAAkC,CAAC,QAAQ,CAAA;gBAC5D,aAAa,GAAG,SAAS,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;gBAC7C,aAAa,GAAG,IAAK,CAAC,UAAU,CAAC,gBAAiB,CAAoB,CAAA;gBACtE,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,gBAAgB,iBAAiB,aAAa,eAAe,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACvH,YAAY,GAAG,aAAa,CAAA;gBAC5B,aAAa,GAAI,aAAiC,CAAC,QAAQ,CAAC,CAAC,CAAE,aAAiC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChH,aAAa,GAAG,gBAAgB,CAAA;YACpC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAA;QACrD,OAAO,IAAI,aAAa,CAAE,YAAa,EAAE,aAAc,EAAE,IAAI,EAAE,sBAAuB,CAAC,CAAA;IAC3F,CAAC;IACD,qBAAqB,CAAC,QAAkB;QACpC,MAAM,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAA;QAClD,IAAI,cAAc,GAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACrE,IAAI,SAAS,GAAU,cAAc,CAAC,KAAK,CAAA;QAC3C,IAAI,cAAc,GAAU,cAAc,CAAA;QAE1C,IAAI,aAAoB,CAAA;QACxB,IAAI,kBAAyB,CAAA;QAC7B,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,IAAI,IAA6B,CAAA;QAEjC,MAAM,MAAM,GAAuB,CAAC;gBAChC,SAAS;gBACT,KAAK,EAAE,SAAS;gBAChB,eAAe;gBACf,KAAK,EAAE,cAAc;gBACrB,oBAAoB;gBACpB,MAAM,EAAE,cAAc;gBACtB,YAAY;gBACZ,8EAA8E;gBAC9E,4BAA4B;gBAC5B,yBAAyB;gBACzB,iCAAiC;gBACjC,qBAAqB;gBACrB,IAAI,EAAE,CAAC,cAAc,CAAC;aACzB,CAAC,CAAA;QAEF,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,kFAAkF;YAClF,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;YAE1G,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC,CAAA;YAC5D,iBAAiB;YACjB,IAAI,oBAAoB,KAAK,WAAW,EAAE,CAAC;gBAEvC,gBAAgB;gBAChB,MAAM,EAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC,GAAG,EAAG,CAAA;gBAClD,MAAM,CAAC,CAAC,YAAY,EAAE,gEAAgE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACvG,SAAS,GAAG,SAAU,CAAA;gBACtB,cAAc,GAAG,SAAU,CAAA;gBAC3B,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAA;gBAClD,YAAY,GAAG,IAAI,CAAA;gBACnB,aAAa,GAAG,EAAE,CAAA;gBAClB,kBAAkB,GAAG,EAAE,CAAA;gBACvB,IAAI,GAAG,SAAS,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAE,CAAA;gBAChC,MAAM,sBAAsB,GAAG,cAAc,CAAC,UAAU,CAAC,oBAAqB,CAAoB,CAAA;gBAClG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;gBAE1F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAkB,CAAA;gBAE/F,mBAAmB;gBACnB,MAAM,iBAAiB,GAAG,GAAG,cAAc,IAAI,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;gBAExI,gDAAgD;gBAChD,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;oBAC7D,oBAAoB;oBACpB,kBAAkB,GAAG,cAAc,CAAA;oBACnC,kDAAkD;gBACtD,CAAC;qBAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAC,CAAC;oBAC9B,iBAAiB;oBACjB,8BAA8B;oBAC9B,kBAAkB,GAAG,OAAO,iBAAiB,EAAE,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACJ,qBAAqB;oBACrB,kBAAkB,GAAG,iBAAiB,CAAA;gBAC1C,CAAC;gBAGD,gCAAgC;gBAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC7B,cAAc,GAAG,iBAAiB,CAAA;gBACtC,CAAC;gBAED,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;gBACtB,cAAc,GAAG,iBAAiB,CAAA;gBAElC,8CAA8C;gBAC9C,mDAAmD;gBACnD,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAA;gBACzC,+CAA+C;gBAC/C,YAAY,GAAG,KAAK,CAAA;YACxB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,cAAc;gBACtB,YAAY;gBACZ,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,kBAAmB;gBAC9B,IAAI;aACP,CAAC,CAAA;QACN,CAAC;QAED,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,yBAAyB,CAAC,QAAkB,EAAE,aAAqB,EAAE,UAAU,GAAG,KAAK;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;QAEtF,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACtF,MAAM,eAAe,GACjB,CAAC,UAAU;YACX,aAAa,KAAK,IAAI;YACtB,CAAC,YAAY;YACb,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,IAAI,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;QAEtE,mCAAmC;QACnC,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,QAAQ,EAAE,sBAAsB,EAAE,EAAE,CAAC;gBACrC,4CAA4C;gBAC5C,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;gBAC9D,OAAO,CAAC,WAAW,EAAE,QAAS,CAAC,SAAU,EAAE,WAAW,CAAC,CAAA;YAC3D,CAAC;iBAAM,CAAC;gBACJ,4CAA4C;gBAC5C,MAAM,cAAc,GAAG,QAAS,CAAC,WAAW,EAAE,CAAC,MAAM,CAAA;gBACrD,MAAM,SAAS,GAAG,QAAQ,EAAE,yBAAyB,EAAE,CAAC,CAAC;oBACrD,CAAC,QAAQ,EAAE,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,CAAC,CAAC;oBACrI,CAAC,QAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,MAAO,CAAC,KAAM,CAAC,CAAA;gBAExH,OAAO,CAAC,SAAU,EAAE,SAAS,EAAE,SAAU,CAAC,CAAA;YAC9C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YACnG,OAAO,CAAC,KAAK,EAAE,SAAU,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;IACL,CAAC;IACD,2BAA2B,CAAE,QAAkB;QAC3C,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,cAAc;QACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC,CAAA;YACvD,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;gBACrD,KAAK,GAAG,IAAI,CAAA;gBACZ,MAAK;YACT,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA,CAAC,CAAC,SAAS,CAAA;IACpC,CAAC;IACD,4BAA4B,CAAE,QAAkB;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAA;QAC5D,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAA;QAChC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAEvD,OAAO;YACH,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,SAAS,EAAE,GAAG,IAAI,CAAC;YAC1C,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,SAAS,EAAE,GAAG,IAAI,CAAC;SAC7C,CAAA;IACL,CAAC;IAED,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,UAAU,YAAY,CAAC,CAAA;QACvE,MAAM,YAAY,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,SAAS,CAAqB,CAAC,QAAQ,CAAA;QACtG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAClD,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,IAAI,YAAY,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACxF,OAAO,YAAY,CAAC,cAAe,CAAA;QACvC,CAAC;aAAM,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,IAAI,YAAY,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC/F,OAAO,YAAY,CAAC,cAAc,CAAA;QACtC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,EAAE,uBAAuB,UAAU,IAAI,SAAS,EAAE,CAAC,CAAA;YAC/D,OAAO,EAAE,CAAA;QACb,CAAC;IACL,CAAC;IACD,eAAe,CAAC,UAAkB,EAAE,cAAwB;QACxD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,UAAU,YAAY,CAAC,CAAA;QACvE,MAAM,eAAe,GAAoB,EAAE,CAAA;QAC3C,MAAM,kBAAkB,GAAoB,EAAE,CAAA;QAC9C,MAAM,gBAAgB,GAAoB,EAAE,CAAA;QAC5C,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACnC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;gBACpD,IAAI,IAAI,CAAC,OAAO,EAAI,CAAC;oBACjB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,wCAAwC;oBACxC,qCAAqC;oBACrC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;wBAChE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACjC,CAAC;yBAAM,CAAC;wBACJ,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC/B,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;IAClE,CAAC;CACJ"}
@@ -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"}