interaqt 1.5.9 → 1.7.0-alpha.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 (119) hide show
  1. package/agent/agentspace/knowledge/generator/api-reference.md +14 -5
  2. package/agent/agentspace/knowledge/usage/04-reactive-computations.md +18 -28
  3. package/agent/agentspace/knowledge/usage/14-api-reference.md +12 -2
  4. package/agent/skill/interaqt-migration.md +18 -2
  5. package/agent/skill/interaqt-patterns.md +3 -1
  6. package/agent/skill/interaqt-reference.md +27 -2
  7. package/dist/builtins/interaction/Data.d.ts +0 -41
  8. package/dist/builtins/interaction/Data.d.ts.map +1 -1
  9. package/dist/builtins/interaction/Interaction.d.ts +11 -4
  10. package/dist/builtins/interaction/Interaction.d.ts.map +1 -1
  11. package/dist/builtins/interaction/activity/ActivityCall.d.ts.map +1 -1
  12. package/dist/builtins/interaction/activity/ActivityManager.d.ts.map +1 -1
  13. package/dist/builtins/interaction/index.d.ts +0 -1
  14. package/dist/builtins/interaction/index.d.ts.map +1 -1
  15. package/dist/core/Any.d.ts.map +1 -1
  16. package/dist/core/Average.d.ts +5 -0
  17. package/dist/core/Average.d.ts.map +1 -1
  18. package/dist/core/BoolExp.d.ts +2 -0
  19. package/dist/core/BoolExp.d.ts.map +1 -1
  20. package/dist/core/Constraint.d.ts.map +1 -1
  21. package/dist/core/Count.d.ts +5 -0
  22. package/dist/core/Count.d.ts.map +1 -1
  23. package/dist/core/Custom.d.ts +16 -0
  24. package/dist/core/Custom.d.ts.map +1 -1
  25. package/dist/core/Entity.d.ts.map +1 -1
  26. package/dist/core/Every.d.ts +5 -0
  27. package/dist/core/Every.d.ts.map +1 -1
  28. package/dist/core/Property.d.ts.map +1 -1
  29. package/dist/core/RealDictionary.d.ts.map +1 -1
  30. package/dist/core/RealTime.d.ts.map +1 -1
  31. package/dist/core/Relation.d.ts +5 -0
  32. package/dist/core/Relation.d.ts.map +1 -1
  33. package/dist/core/ScopedSequence.d.ts.map +1 -1
  34. package/dist/core/SideEffect.d.ts.map +1 -1
  35. package/dist/core/StateMachine.d.ts.map +1 -1
  36. package/dist/core/StateNode.d.ts.map +1 -1
  37. package/dist/core/StateTransfer.d.ts.map +1 -1
  38. package/dist/core/Summation.d.ts +5 -0
  39. package/dist/core/Summation.d.ts.map +1 -1
  40. package/dist/core/Transform.d.ts +7 -7
  41. package/dist/core/Transform.d.ts.map +1 -1
  42. package/dist/core/WeightedSummation.d.ts.map +1 -1
  43. package/dist/core/init.d.ts.map +1 -1
  44. package/dist/core/types.d.ts.map +1 -1
  45. package/dist/core/utils.d.ts +5 -0
  46. package/dist/core/utils.d.ts.map +1 -1
  47. package/dist/drivers/Mysql.d.ts +2 -1
  48. package/dist/drivers/Mysql.d.ts.map +1 -1
  49. package/dist/drivers/PGLite.d.ts.map +1 -1
  50. package/dist/drivers/PostgreSQL.d.ts +1 -0
  51. package/dist/drivers/PostgreSQL.d.ts.map +1 -1
  52. package/dist/index.js +6540 -5985
  53. package/dist/index.js.map +1 -1
  54. package/dist/runtime/ComputationSourceMap.d.ts +4 -0
  55. package/dist/runtime/ComputationSourceMap.d.ts.map +1 -1
  56. package/dist/runtime/Controller.d.ts +15 -1
  57. package/dist/runtime/Controller.d.ts.map +1 -1
  58. package/dist/runtime/MonoSystem.d.ts +2 -0
  59. package/dist/runtime/MonoSystem.d.ts.map +1 -1
  60. package/dist/runtime/Scheduler.d.ts +17 -1
  61. package/dist/runtime/Scheduler.d.ts.map +1 -1
  62. package/dist/runtime/System.d.ts +2 -0
  63. package/dist/runtime/System.d.ts.map +1 -1
  64. package/dist/runtime/computations/Any.d.ts +5 -1
  65. package/dist/runtime/computations/Any.d.ts.map +1 -1
  66. package/dist/runtime/computations/Average.d.ts +5 -1
  67. package/dist/runtime/computations/Average.d.ts.map +1 -1
  68. package/dist/runtime/computations/Computation.d.ts +58 -0
  69. package/dist/runtime/computations/Computation.d.ts.map +1 -1
  70. package/dist/runtime/computations/Count.d.ts +5 -1
  71. package/dist/runtime/computations/Count.d.ts.map +1 -1
  72. package/dist/runtime/computations/Custom.d.ts +4 -1
  73. package/dist/runtime/computations/Custom.d.ts.map +1 -1
  74. package/dist/runtime/computations/Every.d.ts +5 -1
  75. package/dist/runtime/computations/Every.d.ts.map +1 -1
  76. package/dist/runtime/computations/StateMachine.d.ts.map +1 -1
  77. package/dist/runtime/computations/Summation.d.ts +5 -1
  78. package/dist/runtime/computations/Summation.d.ts.map +1 -1
  79. package/dist/runtime/computations/Transform.d.ts +3 -1
  80. package/dist/runtime/computations/Transform.d.ts.map +1 -1
  81. package/dist/runtime/computations/WeightedSummation.d.ts +13 -4
  82. package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -1
  83. package/dist/runtime/errors/ComputationErrors.d.ts +3 -0
  84. package/dist/runtime/errors/ComputationErrors.d.ts.map +1 -1
  85. package/dist/runtime/errors/index.d.ts +1 -1
  86. package/dist/runtime/errors/index.d.ts.map +1 -1
  87. package/dist/runtime/migration.d.ts +10 -3
  88. package/dist/runtime/migration.d.ts.map +1 -1
  89. package/dist/storage/erstorage/AttributeQuery.d.ts +0 -1
  90. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
  91. package/dist/storage/erstorage/CreationExecutor.d.ts +10 -12
  92. package/dist/storage/erstorage/CreationExecutor.d.ts.map +1 -1
  93. package/dist/storage/erstorage/DeletionExecutor.d.ts +15 -10
  94. package/dist/storage/erstorage/DeletionExecutor.d.ts.map +1 -1
  95. package/dist/storage/erstorage/EntityToTableMap.d.ts +14 -0
  96. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
  97. package/dist/storage/erstorage/FilteredEntityManager.d.ts +83 -18
  98. package/dist/storage/erstorage/FilteredEntityManager.d.ts.map +1 -1
  99. package/dist/storage/erstorage/MatchExp.d.ts +1 -1
  100. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
  101. package/dist/storage/erstorage/MergedItemProcessor.d.ts +29 -15
  102. package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -1
  103. package/dist/storage/erstorage/QueryExecutor.d.ts +23 -1
  104. package/dist/storage/erstorage/QueryExecutor.d.ts.map +1 -1
  105. package/dist/storage/erstorage/RecordInfo.d.ts +1 -0
  106. package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -1
  107. package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -1
  108. package/dist/storage/erstorage/RecordQueryAgent.d.ts +22 -5
  109. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
  110. package/dist/storage/erstorage/SQLBuilder.d.ts +9 -0
  111. package/dist/storage/erstorage/SQLBuilder.d.ts.map +1 -1
  112. package/dist/storage/erstorage/Setup.d.ts +22 -5
  113. package/dist/storage/erstorage/Setup.d.ts.map +1 -1
  114. package/dist/storage/erstorage/UpdateExecutor.d.ts +9 -13
  115. package/dist/storage/erstorage/UpdateExecutor.d.ts.map +1 -1
  116. package/package.json +2 -2
  117. package/agent/.claude/settings.local.json +0 -147
  118. package/dist/builtins/interaction/DataAttributives.d.ts +0 -37
  119. package/dist/builtins/interaction/DataAttributives.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { MatchExpressionData } from './MatchExp.js';
2
2
  import { EntityToTableMap } from './EntityToTableMap.js';
3
- import { RecordQueryAgent } from './RecordQueryAgent.js';
3
+ import { RecordQueryAgent, Record } from './RecordQueryAgent.js';
4
4
  import { RecordMutationEvent } from '../../runtime';
5
5
  export interface FilteredEntityDependency {
6
6
  filteredEntityName: string;
@@ -13,13 +13,49 @@ export interface FilteredEntityDependency {
13
13
  }[];
14
14
  }
15
15
  /**
16
- * 管理 filtered entity 的所有功能,包括依赖分析、跨实体查询和级联事件处理
16
+ * 一次变更操作的"前置成员资格快照"。
17
+ * 在真正执行变更之前采集(beforeMutation 阶段),变更之后与新的求值结果做 diff(settle 阶段)。
18
+ */
19
+ export type MembershipCheck = {
20
+ dependency: FilteredEntityDependency;
21
+ recordIds: string[];
22
+ beforeMemberIds: Set<string>;
23
+ };
24
+ /**
25
+ * 删除操作的前置成员资格快照:recordName(base)下每条待删除记录当前所属的 filtered entity 集合。
26
+ */
27
+ export type DeletionMembershipSnapshot = {
28
+ recordName: string;
29
+ membersByFilteredEntity: Map<string, Set<string>>;
30
+ recordsById: Map<string, Record>;
31
+ children: DeletionMembershipSnapshot[];
32
+ };
33
+ /**
34
+ * 让子 events 数组共享父 events 数组的账本。
35
+ * CAUTION 删除流程为了控制事件顺序会先把事件收集到局部数组(如 linkAndCascadeEvents),
36
+ * 再拼接进操作级 events。若不共享账本,嵌套钩子与外层结算会因为账本割裂而重复发出成员资格事件。
37
+ */
38
+ export declare function shareMembershipLedger(childEvents: RecordMutationEvent[] | undefined, parentEvents: RecordMutationEvent[] | undefined): void;
39
+ /**
40
+ * 管理 filtered entity 的所有功能:依赖分析、成员资格求值与成员资格事件(membership diff)。
41
+ *
42
+ * 架构原则(无状态设计):
43
+ * - 查询侧:谓词重写(resolvedMatchExpression,由 MatchExp 构造器统一合并),实时正确。
44
+ * - 事件侧:变更时的成员资格 diff——变更前采集受影响记录及其成员资格(beforeMutation),
45
+ * 变更后重新求值并对比(settle),差异即事件。谓词永远只由 SQL 求值(与查询侧同一真相源),
46
+ * 不在内存中模拟谓词语义(避免出现第二套判定引擎)。
47
+ * - 没有任何持久化的成员标记,因此不存在"标记与数据脱同步"的脏状态,也没有并发下的
48
+ * 读-改-写丢失更新问题。
17
49
  */
18
50
  export declare class FilteredEntityManager {
19
51
  private map;
20
52
  private queryAgent;
21
53
  private dependencies;
22
54
  constructor(map: EntityToTableMap, queryAgent: RecordQueryAgent);
55
+ /**
56
+ * 初始化所有 filtered entity 的依赖关系(每个 MapData 只计算一次)
57
+ */
58
+ private initializeDependencies;
23
59
  /**
24
60
  * 分析 filtered entity 的过滤条件,提取所有依赖的实体和路径
25
61
  */
@@ -33,17 +69,21 @@ export declare class FilteredEntityManager {
33
69
  */
34
70
  getAffectedFilteredEntities(entityName: string): FilteredEntityDependency[];
35
71
  /**
36
- * 清除所有依赖关系
72
+ * 清除所有依赖关系(同时失效按 MapData 共享的缓存)
37
73
  */
38
74
  clear(): void;
39
75
  /**
40
- * 根据依赖关系和变更的记录,查找所有受影响的源记录
76
+ * 根据依赖路径反向查询受影响的源记录 id(批量)。
77
+ * path 为空时受影响的就是变更记录本身。
78
+ */
79
+ private findAffectedSourceRecordIds;
80
+ /**
81
+ * 批量检查记录是否满足 filtered entity 的条件,返回满足条件的 id 集合。
82
+ * CAUTION 一次 membership 查询覆盖所有记录,避免每条记录一次查询的 N+1。
41
83
  */
42
- findAffectedSourceRecords(dependency: FilteredEntityDependency, changedEntityName: string, changedRecordId: string, changedAttributes: string[]): Promise<{
43
- id: string;
44
- }[]>;
84
+ checkRecordsMatchFilter(recordIds: string[], entityName: string, matchExpression: MatchExpressionData): Promise<Set<string>>;
45
85
  /**
46
- * 检查记录是否满足 filtered entity 的条件
86
+ * 检查单条记录是否满足 filtered entity 的条件
47
87
  */
48
88
  checkRecordMatchesFilter(recordId: string, entityName: string, matchExpression: MatchExpressionData): Promise<boolean>;
49
89
  /**
@@ -51,20 +91,45 @@ export declare class FilteredEntityManager {
51
91
  */
52
92
  getFilteredEntitiesForBase(baseEntityName: string): Array<{
53
93
  name: string;
54
- matchExpression: any;
94
+ matchExpression: MatchExpressionData;
55
95
  }>;
56
96
  /**
57
- * 更新记录的 filtered entity 标记(主入口方法)
97
+ * 变更前采集:找出 changedFields 影响到的所有依赖,确定受影响的 base 记录集合,
98
+ * 并记录它们变更前的成员资格。必须在真正执行变更之前调用。
99
+ *
100
+ * CAUTION 受影响记录集合只在 before 阶段确定一次。对深层路径依赖(reverse path 查询),
101
+ * 该查询走的是"未被本次变更修改的关系段",因此变更前后集合一致;对变更记录自身(path 为空)
102
+ * 集合就是入参。settle 阶段不重复反查。
103
+ */
104
+ collectMembershipChecks(entityName: string, recordIds: string[], changedFields: string[] | undefined, events?: RecordMutationEvent[]): Promise<MembershipCheck[]>;
105
+ /**
106
+ * 关系(link)变更前采集:关系的建立/解除会改变两端实体的成员资格。
107
+ * endpoints 直接给出两端记录 id(不需要反查变更的关系段本身)。
108
+ */
109
+ collectLinkMembershipChecks(linkName: string, endpoints: {
110
+ sourceIds?: (string | undefined)[];
111
+ targetIds?: (string | undefined)[];
112
+ }, events?: RecordMutationEvent[]): Promise<MembershipCheck[]>;
113
+ /**
114
+ * 变更后结算:重新求值成员资格,与 before 快照(或账本中的最新已知状态)对比,
115
+ * 差异生成 create/delete 事件。
116
+ */
117
+ settleMembershipChecks(checks: MembershipCheck[], events?: RecordMutationEvent[]): Promise<void>;
118
+ /**
119
+ * 创建钩子:新记录的成员资格(before 恒为非成员),满足条件即产生 create 事件。
120
+ * 在记录(含其嵌套关联与关系)全部创建完成后调用。
121
+ */
122
+ handleRecordCreation(recordName: string, recordId: string, fullRecord: Record, events?: RecordMutationEvent[]): Promise<void>;
123
+ /**
124
+ * 删除前采集:待删除记录(含同表 reliance 树)当前所属的 filtered entity 集合。
125
+ * 必须在任何物理删除发生之前调用(谓词求值需要行与关系仍然存在)。
58
126
  */
59
- updateFilteredEntityFlags(entityName: string, recordId: string, events?: RecordMutationEvent[], originalRecord?: any, isCreation?: boolean, changedFields?: string[]): Promise<void>;
60
- isFlagEqual(flag1: {
61
- [key: string]: boolean;
62
- }, flag2: {
63
- [key: string]: boolean;
64
- }): boolean;
127
+ collectDeletionMemberships(recordName: string, records: Record[], events?: RecordMutationEvent[]): Promise<DeletionMembershipSnapshot | undefined>;
65
128
  /**
66
- * 更新单个依赖关系的 filtered entity 标记
129
+ * 删除结算:按删除前快照为每条记录的每个所属 filtered entity 产生 delete 事件。
130
+ * 事件 push 到 targetEvents(调用方控制排序位置:filtered delete 事件先于记录本身的 delete 事件),
131
+ * 账本仍然按 ledgerEvents(整个操作共享的 events 数组)判重。
67
132
  */
68
- private updateSingleFilteredEntityFlag;
133
+ settleDeletionMemberships(snapshot: DeletionMembershipSnapshot | undefined, recordName: string, records: Record[], targetEvents: RecordMutationEvent[], ledgerEvents?: RecordMutationEvent[]): void;
69
134
  }
70
135
  //# sourceMappingURL=FilteredEntityManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilteredEntityManager.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/FilteredEntityManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,WAAW,wBAAwB;IACrC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,mBAAmB,CAAA;IACpC,YAAY,EAAE;QACV,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,UAAU,EAAE,MAAM,EAAE,CAAA;KACvB,EAAE,CAAA;CACN;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAGlB,OAAO,CAAC,GAAG;IAAoB,OAAO,CAAC,UAAU;IAF7D,OAAO,CAAC,YAAY,CAAqD;gBAErD,GAAG,EAAE,gBAAgB,EAAU,UAAU,EAAE,gBAAgB;IAI/E;;OAEG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,GAAG,wBAAwB;IA4BvI;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAuEzC;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,wBAAwB,EAAE;IAI3E;;OAEG;IACH,KAAK;IAML;;OAEG;IACG,yBAAyB,CAC3B,UAAU,EAAE,wBAAwB,EACpC,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAuC5B;;OAEG;IACG,wBAAwB,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,mBAAmB,GACrC,OAAO,CAAC,OAAO,CAAC;IAwBnB;;OAEG;IACH,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE,CAAC;IAmCjG;;OAEG;IACG,yBAAyB,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,mBAAmB,EAAO,EAClC,cAAc,CAAC,EAAE,GAAG,EACpB,UAAU,CAAC,EAAE,OAAO,EACpB,aAAa,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC;IAyEhB,WAAW,CAAC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO;IAO1F;;OAEG;YACW,8BAA8B;CA4E/C"}
1
+ {"version":3,"file":"FilteredEntityManager.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/FilteredEntityManager.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ export declare class MatchExp {
40
40
  getFinalFieldName(matchAttributePath: string[]): [string, string];
41
41
  getReferenceFieldValue(valueStr: string): string;
42
42
  getFinalFieldValue(isReferenceValue: boolean, key: string, value: [string, any], fieldName: string, fieldType: string | undefined, p: PlaceholderGen, db?: Database): [string, unknown[]];
43
- buildFieldMatchExpression(p: PlaceholderGen, db?: Database): BoolExp<FieldMatchAtom> | null;
43
+ buildFieldMatchExpression(p: PlaceholderGen, db?: Database, fnMatchHandler?: (atomData: FieldMatchAtom) => FieldMatchAtom): BoolExp<FieldMatchAtom> | null;
44
44
  and(condition: MatchAtom | MatchExp): MatchExp;
45
45
  rebase(attributeName: string): MatchExp;
46
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MatchExp.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/MatchExp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAwC,MAAM,OAAO,CAAC;AACrE,OAAO,EAAC,gBAAgB,EAAkB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAE/C,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AACzF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEpD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;IAEvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAA;AAED,qBAAa,QAAQ;IA+DsB,GAAG,EAAE,gBAAgB;IAAqC,iBAAiB,CAAC,EAAE,MAAM;IAAS,YAAY,CAAC,EAAE,OAAO;WA9D5I,IAAI,CAAC,SAAS,EAAE,SAAS;WAQzB,UAAU,CAAC,SAAS,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;WAYlD,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE;IAQ/C;;;OAGG;WACW,YAAY,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,EAAE,EAAE;IA2BhE,eAAe,EAAE,eAAe,CAAA;IAChC,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;gBACb,UAAU,EAAE,MAAM,EAAS,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,EAAS,iBAAiB,CAAC,EAAE,MAAM,YAAA,EAAS,YAAY,CAAC,EAAE,OAAO,YAAA;IAgB1J,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,GAAG,mBAAmB;IA+C5E,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe;IA2C/E,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKjE,sBAAsB,CAAC,QAAQ,EAAE,MAAM;IASvC,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAC,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAqDtL,yBAAyB,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAsF3F,GAAG,CAAC,SAAS,EAAE,SAAS,GAAC,QAAQ,GAAG,QAAQ;IAa5C,MAAM,CAAC,aAAa,EAAE,MAAM;IA2D5B;;;OAGG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASjC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,QAAQ;CAUlF"}
1
+ {"version":3,"file":"MatchExp.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/MatchExp.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,39 @@
1
1
  import { EntityInstance, RelationInstance } from '../../core';
2
2
  export type MergedItem = EntityInstance | RelationInstance;
3
3
  export type InputItem = EntityInstance | RelationInstance;
4
- export interface MergedItemConfig<T extends MergedItem> {
5
- name: string;
6
- inputItems: T[];
7
- inputFieldName: string;
8
- }
9
- /**
10
- * 统一处理 merged entity 和 merged relation 的处理器
11
- */
12
- export declare function buildEntityTree(entities: EntityInstance[]): Map<string, string[]>;
13
- export declare function buildRelationTree(relations: RelationInstance[]): Map<string, string[]>;
14
4
  /**
15
- * 统一处理所有 merged items (entities 和 relations)
5
+ * merged entity/relation 的判别列(discriminator column)名。
6
+ *
7
+ * merged item 本质是单表继承(Single Table Inheritance):所有 input 的记录存放在同一张
8
+ * 物理表中,用一个字符串判别列记录"记录以哪个具体类型创建"。
9
+ * - 记录创建时 `__type` = 创建所用实体的具体类型名(filtered entity 取其 root base 名)。
10
+ * - 普通 input 的成员条件:`__type = 'X'`(等值匹配,可索引,无跨 driver JSON 兼容问题)。
11
+ * - filtered input 的成员条件:`__type = '根 base 名' AND 谓词`(谓词声明式,随数据变化自然进出)。
12
+ * - merged item 的成员条件:各 input 成员条件的 OR。
16
13
  */
17
- export declare function processMergedItems(entities: EntityInstance[], relations: RelationInstance[]): {
14
+ export declare const MERGED_TYPE_ATTR = "__type";
15
+ export interface ProcessMergedItemsResult {
18
16
  entities: EntityInstance[];
19
17
  relations: RelationInstance[];
20
- };
18
+ /**
19
+ * 抽象名集合:不允许以这些名字直接创建记录。
20
+ * 包括所有 merged item 名、以 merged item 为(传递)base 的 filtered item 名,
21
+ * 以及内部生成的虚拟 base 名。
22
+ */
23
+ abstractNames: Set<string>;
24
+ }
25
+ /**
26
+ * 统一处理所有 merged items (entities 和 relations)。
27
+ *
28
+ * merged item 被"编译"为 filtered item 视图:
29
+ * 1. 物理 base(merged item 自身或虚拟 base)持有合并后的 properties + `__type` 判别列。
30
+ * 2. 每个 input 变成物理 base 上的 filtered item,成员条件用 `__type` 表达。
31
+ * 3. filtered input 的 root base(如 CustomerBase)同样 rebase 为 filtered item,保持可查询性。
32
+ * 之后查询重写与事件(membership diff)完全复用 filtered entity 的统一机制,无需独立代码路径。
33
+ */
34
+ export declare function processMergedItems(entities: EntityInstance[], relations: RelationInstance[]): ProcessMergedItemsResult;
21
35
  /**
22
- * input item 创建 filtered item
36
+ * 构建 base/input 树(name -> 直接子孙 names),用于 mergeProperties 的 defaultValue 分发。
23
37
  */
24
- export declare function createFilteredItemFromInput<T extends MergedItem>(inputItem: T, baseItem: T, inputFieldName: string): [T, T];
38
+ export declare function buildItemTree(items: MergedItem[]): Map<string, string[]>;
25
39
  //# sourceMappingURL=MergedItemProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MergedItemProcessor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/MergedItemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA8D,MAAM,OAAO,CAAC;AAIrH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,yBAYrD;AAEL,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE,yBAmB1D;AACL;;GAEG;AACH,wBAAgB,kBAAkB,CAC1B,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC9B;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAsB/D;AA+XL;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,UAAU,EACxD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,EACX,cAAc,EAAE,MAAM,GACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAgDR"}
1
+ {"version":3,"file":"MergedItemProcessor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/MergedItemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA8D,MAAM,OAAO,CAAC;AAGrH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;;OAIG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAgFD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC9B,wBAAwB,CAoC1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,yBAoBhD"}
@@ -40,16 +40,38 @@ export declare class QueryExecutor {
40
40
  /**
41
41
  * 结构化原始返回结果
42
42
  * @param rawReturns 数据库返回的原始结果
43
- * @param JSONFields JSON 字段列表
43
+ * @param recordName 根记录名(用于解析各级路径上的 JSON 字段)
44
44
  * @param fieldAliasMap 字段别名映射
45
45
  * @returns 结构化的 Record 数组
46
46
  */
47
47
  private structureRawReturns;
48
+ /**
49
+ * 去除完全相同的原始行(等价于 SQL DISTINCT)
50
+ * 用于消除 match 中出现 x:n 路径时 LEFT JOIN 产生的 fan-out 重复。
51
+ * 因为 SELECT 始终包含各级记录的 id,真正不同的记录必然有列差异,所以完全相同的行一定是重复行。
52
+ */
53
+ private dedupeIdenticalRows;
48
54
  /**
49
55
  * 查找记录(主查询方法)
50
56
  * CAUTION findRelatedRecords 中的递归调用会使得 includeRelationData 变为 true
51
57
  */
52
58
  findRecords(entityQuery: RecordQuery, queryName?: string, recordQueryRef?: RecordQueryRef, context?: RecursiveContext, forUpdate?: boolean): Promise<Record[]>;
59
+ /**
60
+ * 判断某个 x:n 关联查询能否按父 id 集合批量执行。
61
+ * 限制条件:
62
+ * - 至少两条父记录(单条时批量没有收益)。
63
+ * - 没有递归语义(父查询 label / 子查询 label/goto 需要 per-record 的递归上下文)。
64
+ * - 子查询没有 limit/offset(它们是 per-parent 语义,合并后无法保证)。
65
+ * - 关系是 1:n 且非对称:反向是 x:1,可以通过一次 JOIN 拿到父 id 做分组;
66
+ * n:n 的反向仍是 x:n,批量会引入 fan-out 与嵌套 N+1,保持逐条查询。
67
+ */
68
+ private canBatchXToManyQuery;
69
+ /**
70
+ * 按父 id 集合批量查询 x:n(1:n)关联记录,并按反向属性分组回填到各父记录上。
71
+ * 与 findXToManyRelatedRecords 的逐条语义保持一致(包括关系数据 & 的处理),
72
+ * 只是把"每个父记录一次查询"合并为"每批父记录一次查询"。
73
+ */
74
+ findXToManyRelatedRecordsBatched(recordName: string, attributeName: string, parentRecords: Record[], relatedRecordQuery: RecordQuery, recordQueryRef: RecordQueryRef, context: RecursiveContext): Promise<void>;
53
75
  /**
54
76
  * 补全 x:1 遗留记录(x:1 主干上的 x:n 枝干)
55
77
  */
@@ -1 +1 @@
1
- {"version":3,"file":"QueryExecutor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/QueryExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAgC,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAc,MAAM,4BAA4B,CAAA;AAMzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD;;;;;GAKG;AACH,qBAAa,cAAc;IAGJ,WAAW,EAAE,WAAW;IAFpC,iBAAiB,2BAAiC;gBAEtC,WAAW,EAAE,WAAW;IAK3C,gCAAgC,CAAC,WAAW,EAAE,WAAW;IASzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM;CAGlB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;gBAFV,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;IAGlC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACG,WAAW,CACb,WAAW,EAAE,WAAW,EACxB,SAAS,SAAK,EACd,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,GAAE,gBAAmD,EAC5D,SAAS,UAAQ,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC;IAkIpB;;OAEG;IACG,6BAA6B,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB;IAuD7B;;;OAGG;IACG,yBAAyB,CAC3B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,WAAW,EAC/B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB;IAmF7B;;OAEG;IACG,QAAQ,CACV,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CA0CnC"}
1
+ {"version":3,"file":"QueryExecutor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/QueryExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAgC,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAc,MAAM,4BAA4B,CAAA;AAMzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD;;;;;GAKG;AACH,qBAAa,cAAc;IAGJ,WAAW,EAAE,WAAW;IAFpC,iBAAiB,2BAAiC;gBAEtC,WAAW,EAAE,WAAW;IAK3C,gCAAgC,CAAC,WAAW,EAAE,WAAW;IASzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM;CAGlB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;gBAFV,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU;IAGlC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IA8C3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;OAGG;IACG,WAAW,CACb,WAAW,EAAE,WAAW,EACxB,SAAS,SAAK,EACd,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,GAAE,gBAAmD,EAC5D,SAAS,UAAQ,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC;IAsJpB;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;OAIG;IACG,gCAAgC,CAClC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EAAE,EACvB,kBAAkB,EAAE,WAAW,EAC/B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAyFhB;;OAEG;IACG,6BAA6B,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB;IAuD7B;;;OAGG;IACG,yBAAyB,CAC3B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,WAAW,EAC/B,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,gBAAgB;IAmF7B;;OAEG;IACG,QAAQ,CACV,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CA0CnC"}
@@ -28,6 +28,7 @@ export declare class RecordInfo {
28
28
  get filteredBy(): RecordInfo[] | undefined;
29
29
  get isFilteredEntity(): boolean | undefined;
30
30
  get isFilteredRelation(): boolean | undefined;
31
+ get isMergedAbstract(): boolean | undefined;
31
32
  get baseRelationName(): string | undefined;
32
33
  get resolvedBaseRecordName(): string | undefined;
33
34
  get resolvedMatchExpression(): MatchExpressionData | undefined;
@@ -1 +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;IAED,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;IAIlC,IAAI,cAAc,uBAEjB;IAED,IAAI,eAAe,4DAElB;IAED,IAAI,UAAU,6BAEb;IAED,IAAI,gBAAgB,wBAEnB;IAED,IAAI,kBAAkB,wBAErB;IAED,IAAI,gBAAgB,uBAEnB;IAED,IAAI,sBAAsB,uBAEzB;IAED,IAAI,uBAAuB,4DAE1B;CACJ"}
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;IAED,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;IAIlC,IAAI,cAAc,uBAEjB;IAED,IAAI,eAAe,4DAElB;IAED,IAAI,UAAU,6BAEb;IAED,IAAI,gBAAgB,wBAEnB;IAED,IAAI,kBAAkB,wBAErB;IAED,IAAI,gBAAgB,wBAEnB;IAED,IAAI,gBAAgB,uBAEnB;IAED,IAAI,sBAAsB,uBAEzB;IAED,IAAI,uBAAuB,4DAE1B;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordQuery.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RecordQuery.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQuery.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,28 @@ import { RecordQueryRef } from './QueryExecutor.js';
9
9
  export type Record = EntityIdRef & {
10
10
  [k: string]: any;
11
11
  };
12
- export declare class RecordQueryAgent {
12
+ /**
13
+ * executor 之间互相回调所依赖的聚合操作契约。
14
+ *
15
+ * CAUTION CreationExecutor/UpdateExecutor/DeletionExecutor 与 RecordQueryAgent 本质上是同一个聚合,
16
+ * 按文件拆分只是物理组织。这里用显式接口取代原先手工拼装的函数字典(那种写法依赖
17
+ * "恰好方法名匹配"的隐式约定),使循环回调成为受类型约束的显式契约。
18
+ */
19
+ export interface RecordOperationAgent {
20
+ findRecords(entityQuery: RecordQuery, queryName?: string): Promise<Record[]>;
21
+ createRecord(newEntityData: NewRecordData, queryName?: string, events?: RecordMutationEvent[]): Promise<EntityIdRef>;
22
+ createRecordDependency(newRecordData: NewRecordData, events?: RecordMutationEvent[]): Promise<NewRecordData>;
23
+ updateRecord(entityName: string, matchExpressionData: MatchExpressionData, newEntityData: NewRecordData, events?: RecordMutationEvent[]): Promise<Record[]>;
24
+ unlink(linkName: string, matchExpressionData: MatchExpressionData, moveSource?: boolean, reason?: string, events?: RecordMutationEvent[]): Promise<Record[]>;
25
+ deleteRecordSameRowData(recordName: string, records: EntityIdRef[], events?: RecordMutationEvent[], inSameRowDataOp?: boolean): Promise<Record[]>;
26
+ addLinkFromRecord(entity: string, attribute: string, entityId: string, relatedEntityId: string, attributes?: RawEntityData, events?: RecordMutationEvent[]): Promise<EntityIdRef>;
27
+ preprocessSameRowData(newEntityData: NewRecordData, isUpdate?: boolean, events?: RecordMutationEvent[], oldRecord?: Record): Promise<NewRecordData>;
28
+ flashOutCombinedRecordsAndMergedLinks(newEntityData: NewRecordData, events?: RecordMutationEvent[], reason?: string): Promise<{
29
+ [k: string]: RawEntityData;
30
+ }>;
31
+ relocateCombinedRecordDataForLink(linkName: string, matchExpressionData: MatchExpressionData, moveSource?: boolean, events?: RecordMutationEvent[]): Promise<Record[]>;
32
+ }
33
+ export declare class RecordQueryAgent implements RecordOperationAgent {
13
34
  map: EntityToTableMap;
14
35
  database: Database;
15
36
  getPlaceholder: () => PlaceholderGen;
@@ -20,10 +41,6 @@ export declare class RecordQueryAgent {
20
41
  private deletionExecutor;
21
42
  private updateExecutor;
22
43
  constructor(map: EntityToTableMap, database: Database);
23
- /**
24
- * 初始化所有 filtered entity 的依赖关系
25
- */
26
- private initializeFilteredEntityDependencies;
27
44
  /**
28
45
  * 查找记录(主查询方法)- 委托给 QueryExecutor
29
46
  * CAUTION findRelatedRecords 中的递归调用会使得 includeRelationData 变为 true
@@ -1 +1 @@
1
- {"version":3,"file":"RecordQueryAgent.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQueryAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAuB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAc,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAiB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMnE,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG;IAC/B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,qBAAa,gBAAgB;IASN,GAAG,EAAE,gBAAgB;IAAS,QAAQ,EAAE,QAAQ;IARnE,cAAc,EAAE,MAAM,cAAc,CAAA;IACpC,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAgB;gBAEnB,GAAG,EAAE,gBAAgB,EAAS,QAAQ,EAAE,QAAQ;IAWnE;;OAEG;IACH,OAAO,CAAC,oCAAoC;IAmB5C;;;OAGG;IACG,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,SAAK,EAAE,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,GAAE,gBAAmD,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvK,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOxE,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAK5G,YAAY,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAMpH,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA+EvJ;;;OAGG;IACG,qCAAqC,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IAqE/J;;;OAGG;IACG,iCAAiC,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BpK,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3J,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE;QAC/E,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAKpB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3I,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrJ,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAE,aAAkB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAKxJ,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,aAAkB,EAAE,UAAU,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAMhJ,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,UAAQ,EAAE,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5J;;OAEG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CAIhK"}
1
+ {"version":3,"file":"RecordQueryAgent.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQueryAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAuB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAc,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAiB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMnE,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG;IAC/B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,YAAY,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACpH,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5G,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3J,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5J,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACjJ,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACjL,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACnJ,qCAAqC,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC,CAAA;IAC7J,iCAAiC,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CACzK;AAED,qBAAa,gBAAiB,YAAW,oBAAoB;IAStC,GAAG,EAAE,gBAAgB;IAAS,QAAQ,EAAE,QAAQ;IARnE,cAAc,EAAE,MAAM,cAAc,CAAA;IACpC,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAgB;gBAEnB,GAAG,EAAE,gBAAgB,EAAS,QAAQ,EAAE,QAAQ;IAcnE;;;OAGG;IACG,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,SAAK,EAAE,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,GAAE,gBAAmD,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvK,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOxE,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAK5G,YAAY,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAOpH,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvJ;;;OAGG;IACG,qCAAqC,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;IAwE/J;;;OAGG;IACG,iCAAiC,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwCpK,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3J,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE;QAC/E,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAKpB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3I,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrJ,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAE,aAAkB,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAKxJ,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,aAAkB,EAAE,UAAU,UAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IAShJ,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,UAAQ,EAAE,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5J;;OAEG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;CAIhK"}
@@ -74,8 +74,17 @@ export declare class SQLBuilder {
74
74
  * 根据查询树递归计算所有需要 JOIN 的表
75
75
  */
76
76
  getJoinTables(queryTree: RecordQueryTree, context?: string[], parentInfos?: [string, string, string]): JoinTables;
77
+ /**
78
+ * 解析单个函数匹配原子(EXIST 子查询)
79
+ * CAUTION 必须在 buildFieldMatchExpression 遍历原子时就地调用,
80
+ * 这样 EXIST 内层子查询消耗的占位符编号才能和外层值原子保持树序一致(PG 系编号占位符依赖这一点)。
81
+ */
82
+ parseFunctionMatchAtom(entityName: string, atomData: FieldMatchAtom, contextRootEntity: string | undefined, p: PlaceholderGen): FieldMatchAtom;
77
83
  /**
78
84
  * 解析匹配表达式中的 EXIST 子查询
85
+ * CAUTION 该方法保留用于外部(测试等)单独调用。注意在使用编号型占位符的数据库上,
86
+ * 应通过 buildFieldMatchExpression 的 fnMatchHandler 就地处理(见 buildXToOneFindQuery),
87
+ * 否则占位符编号会和参数收集顺序错位。
79
88
  */
80
89
  parseMatchExpressionValue(entityName: string, fieldMatchExp: BoolExp<FieldMatchAtom> | null, contextRootEntity: string | undefined, p: PlaceholderGen): BoolExp<FieldMatchAtom> | null;
81
90
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SQLBuilder.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/SQLBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SQLBuilder.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/SQLBuilder.ts"],"names":[],"mappings":"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"}
@@ -64,10 +64,6 @@ export declare class DBSetup {
64
64
  joinTables(joinTargetRecord: string, record: string, link: string): string[] | undefined;
65
65
  combineRecordTable(mergeTarget: string, toMerge: string, link: string): string[] | undefined;
66
66
  renameTableWithJoinedEntities(originTableName: string): void;
67
- resolveBaseSourceEntityAndFilter(entity: EntityInstance): {
68
- baseEntity: any;
69
- matchExpression: any;
70
- } | undefined;
71
67
  /**
72
68
  * 验证 filtered entity 的过滤条件中的路径不包含 x:n 关系
73
69
  */
@@ -78,7 +74,13 @@ export declare class DBSetup {
78
74
  private validateSinglePath;
79
75
  private currentFilteredEntityName?;
80
76
  /**
81
- * 递归收集所有依赖于给定实体的 filtered entities(包括级联的)
77
+ * 获取 entity/relation 的有效名字(未命名 relation 使用自动生成名)。
78
+ */
79
+ private getItemEffectiveName;
80
+ /**
81
+ * 递归收集所有依赖于给定实体的 filtered entities(包括级联的)。
82
+ * CAUTION 用名字而不是实例身份比较:merged item 处理阶段会克隆实体图
83
+ * (RefContainer.add 会克隆虚拟 base),实例身份在图手术后不可靠,而名字全局唯一。
82
84
  */
83
85
  private collectAllFilteredEntities;
84
86
  createRecord(entity: EntityInstance | RelationInstance, isRelation?: boolean): RecordMapItem;
@@ -132,11 +134,26 @@ export declare class DBSetup {
132
134
  * 复制 attributes 对象,保留函数引用
133
135
  */
134
136
  private copyAttributes;
137
+ /**
138
+ * 校验 entity/relation 的 name 满足 nameFormat 约束。
139
+ * CAUTION name 会被用作表名/字段名/别名直接插值进 SQL(如 CREATE TABLE "${name}"),
140
+ * 这里是 storage 的入口防线(Entity.create/Relation.create 已经先校验过一次,
141
+ * 但实例可能绕过 Klass 工厂直接构造,所以这里必须再校验)。
142
+ */
143
+ private static readonly VALID_NAME_FORMAT;
144
+ private validateRecordNames;
135
145
  buildMap(): void;
136
146
  /**
137
147
  * 统一处理 merged entities 和 merged relations
138
148
  */
149
+ private mergedAbstractNames;
139
150
  private processMergedItems;
151
+ /**
152
+ * 标记抽象记录(merged item 及其派生名)。
153
+ * merged item 是联合类型(抽象类型),直接以它的名义创建记录无法确定具体 __type,
154
+ * 必须在运行期显式报错(explicit control),而不是静默接受产生不属于任何 input 的记录。
155
+ */
156
+ private markMergedAbstractRecords;
140
157
  mergeRecords(): void;
141
158
  assignTableAndField(): void;
142
159
  buildTables(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Setup.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/Setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Setup.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/Setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,OAAO,EAAmB,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE/H,OAAO,EAAE,mBAAmB,EAAmD,cAAc,EAAE,gBAAgB,EAAyG,MAAM,OAAO,CAAC;AACtO,OAAO,EAAwB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAI9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAuF,MAAM,oBAAoB,CAAC;AAIpJ,KAAK,UAAU,GAAG;IACd,IAAI,EAAC,MAAM,CAAC;IACZ,IAAI,EAAC,MAAM,CAAC;IACZ,SAAS,CAAC,EAAC,MAAM,CAAC;IAClB,UAAU,CAAC,EAAC,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,KAAK,GAAG,CAAA;IACvD,SAAS,CAAC,EAAE,cAAc,CAAA;CAC7B,CAAA;AAGD,MAAM,MAAM,SAAS,GAAG;IACpB,CAAC,CAAC,EAAC,MAAM,GAAG;QACR,OAAO,EAAE;YAAC,CAAC,CAAC,EAAC,MAAM,GAAG,UAAU,CAAA;SAAC,CAAC;QAClC,KAAK,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAA;AAEjC,MAAM,MAAM,0BAA0B,GAAG;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,GAAG,2BAA2B,CAAA;AAG3F,qBAAa,OAAO;IAYL,QAAQ,EAAE,cAAc,EAAE;IAC1B,SAAS,EAAE,gBAAgB,EAAE;IAC7B,QAAQ,CAAC,EAAE,QAAQ;IACnB,UAAU,EAAE,UAAU;IAdjC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,YAAY,CAAY;IACzB,gBAAgB,sBAA2B;IAC3C,iBAAiB,2BAAiC;IAClD,QAAQ,EAAE,GAAG,EAAE,CAAK;IACpB,MAAM,EAAC,SAAS,CAAK;IACrB,GAAG,EAAE,OAAO,CAA4B;IACxC,YAAY,EAAE,YAAY,CAAqB;IAC/C,qBAAqB,EAAE,oBAAoB,EAAE,CAAK;gBAE9C,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAAE,EAC7B,QAAQ,CAAC,EAAE,QAAQ,YAAA,EACnB,UAAU,GAAE,UAAe;IAMtC,mBAAmB,CAAC,IAAI,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM;IAW7C,UAAU,CAAC,gBAAgB,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAE,SAAS;IAoCrF,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAUrE,6BAA6B,CAAC,eAAe,EAAE,MAAM;IAoBrD;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAQnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAgBlC,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,EAAE,UAAU,CAAC,EAAE,OAAO,GA4CnE,aAAa;IAEtB,0BAA0B,CAAC,MAAM,EAAE,cAAc,GAwBxC,aAAa;IAEtB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,GAmC9C,aAAa;IAEtB,2CAA2C,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB;;;;IA+BrF,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAelD,WAAW;IAEpB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAiB1D,WAAW;IAGpB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,GAcpH,WAAW;IAEpB,kCAAkC,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAI1E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAoDzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoBpC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiDhC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAUtC;;;OAGG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAC7D,OAAO,CAAC,mBAAmB;IAmB3B,QAAQ;IAqCR;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAyB;IACpD,OAAO,CAAC,kBAAkB;IAW1B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAQjC,YAAY;IA2HZ,mBAAmB;IAqFnB,WAAW;IAgCX,cAAc;IAgBd,YAAY;IAMZ,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,gBAAgB;IA6CxB,mBAAmB,IAAI,yBAAyB,EAAE;IAclD,iBAAiB;IAMjB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA+B9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;CA8CnC"}
@@ -1,11 +1,10 @@
1
1
  import { EntityIdRef, Database, RecordMutationEvent } from '../../runtime';
2
2
  import { EntityToTableMap } from './EntityToTableMap.js';
3
3
  import { MatchExpressionData } from './MatchExp.js';
4
- import { RecordQuery } from './RecordQuery.js';
5
- import { NewRecordData, RawEntityData } from './NewRecordData.js';
4
+ import { NewRecordData } from './NewRecordData.js';
6
5
  import { SQLBuilder } from './SQLBuilder.js';
7
6
  import { FilteredEntityManager } from './FilteredEntityManager.js';
8
- import { Record } from './RecordQueryAgent.js';
7
+ import { Record, RecordOperationAgent } from './RecordQueryAgent.js';
9
8
  /**
10
9
  * UpdateExecutor - 更新操作执行器
11
10
  *
@@ -18,22 +17,19 @@ import { Record } from './RecordQueryAgent.js';
18
17
  export declare class UpdateExecutor {
19
18
  private map;
20
19
  private database;
21
- private helper;
20
+ private agent;
22
21
  private sqlBuilder;
23
22
  private filteredEntityManager;
24
- constructor(map: EntityToTableMap, database: Database, filteredEntityManager: FilteredEntityManager, sqlBuilder: SQLBuilder, helper: {
25
- findRecords: (entityQuery: RecordQuery, queryName: string) => Promise<Record[]>;
26
- createRecordDependency: (newRecordData: NewRecordData, events?: RecordMutationEvent[]) => Promise<NewRecordData>;
27
- createRecord: (newEntityData: NewRecordData, queryName?: string, events?: RecordMutationEvent[]) => Promise<EntityIdRef>;
28
- addLinkFromRecord: (entity: string, attribute: string, entityId: string, relatedEntityId: string, attributes?: RawEntityData, events?: RecordMutationEvent[]) => Promise<EntityIdRef>;
29
- unlink: (linkName: string, matchExpression: MatchExpressionData, moveSource: boolean, reason: string, events?: RecordMutationEvent[]) => Promise<Record[]>;
30
- deleteRecordSameRowData: (recordName: string, records: EntityIdRef[], events?: RecordMutationEvent[], inSameRowDataOp?: boolean) => Promise<Record[]>;
31
- preprocessSameRowData: (newEntityData: NewRecordData, isUpdate: boolean, events?: RecordMutationEvent[], oldRecord?: Record) => Promise<NewRecordData>;
32
- });
23
+ constructor(map: EntityToTableMap, database: Database, filteredEntityManager: FilteredEntityManager, sqlBuilder: SQLBuilder, agent: RecordOperationAgent);
33
24
  /**
34
25
  * 更新记录(主入口)
35
26
  */
36
27
  updateRecord(entityName: string, matchExpressionData: MatchExpressionData, newEntityData: NewRecordData, events?: RecordMutationEvent[]): Promise<Record[]>;
28
+ /**
29
+ * 采集本次 update 通过行内字段建立新关系时"另一端既有记录"的成员资格快照。
30
+ * (行内写入不经过 addLink,另一端记录的成员资格变化需要在这里显式覆盖。)
31
+ */
32
+ private collectUpdateLinkChecks;
37
33
  /**
38
34
  * 更新同行数据
39
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateExecutor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/UpdateExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateExecutor.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/UpdateExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAY,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAmB,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAKnB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,KAAK;IATjB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,qBAAqB,CAAuB;gBAGxC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,UAAU,EAEd,KAAK,EAAE,oBAAoB;IAMvC;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgDjK;;;OAGG;YACW,uBAAuB;IAerC;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IA8CtI;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE;IA2EvI;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE;QAC/E,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;CAU7B"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "@electric-sql/pglite": "^0.3.2",
5
5
  "@interaqt/uuidv7": "^1.0.1",
6
6
  "@microsoft/api-extractor": "^7.52.1",
7
- "@release-it/conventional-changelog": "^8.0.2",
7
+ "@release-it/conventional-changelog": "^10.0.6",
8
8
  "@types/better-sqlite3": "^7.6.12",
9
9
  "@types/node": "^22.13.10",
10
10
  "@types/pg": "^8.11.11",
@@ -44,7 +44,7 @@
44
44
  "sync:agent": "tsx scripts/sync-agent-files.ts",
45
45
  "release": "release-it"
46
46
  },
47
- "version": "1.5.9",
47
+ "version": "1.7.0-alpha.0",
48
48
  "main": "dist/index.js",
49
49
  "files": [
50
50
  "dist",