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.
- package/agent/agentspace/knowledge/generator/api-reference.md +14 -5
- package/agent/agentspace/knowledge/usage/04-reactive-computations.md +18 -28
- package/agent/agentspace/knowledge/usage/14-api-reference.md +12 -2
- package/agent/skill/interaqt-migration.md +18 -2
- package/agent/skill/interaqt-patterns.md +3 -1
- package/agent/skill/interaqt-reference.md +27 -2
- package/dist/builtins/interaction/Data.d.ts +0 -41
- package/dist/builtins/interaction/Data.d.ts.map +1 -1
- package/dist/builtins/interaction/Interaction.d.ts +11 -4
- package/dist/builtins/interaction/Interaction.d.ts.map +1 -1
- package/dist/builtins/interaction/activity/ActivityCall.d.ts.map +1 -1
- package/dist/builtins/interaction/activity/ActivityManager.d.ts.map +1 -1
- package/dist/builtins/interaction/index.d.ts +0 -1
- package/dist/builtins/interaction/index.d.ts.map +1 -1
- package/dist/core/Any.d.ts.map +1 -1
- package/dist/core/Average.d.ts +5 -0
- package/dist/core/Average.d.ts.map +1 -1
- package/dist/core/BoolExp.d.ts +2 -0
- package/dist/core/BoolExp.d.ts.map +1 -1
- package/dist/core/Constraint.d.ts.map +1 -1
- package/dist/core/Count.d.ts +5 -0
- package/dist/core/Count.d.ts.map +1 -1
- package/dist/core/Custom.d.ts +16 -0
- package/dist/core/Custom.d.ts.map +1 -1
- package/dist/core/Entity.d.ts.map +1 -1
- package/dist/core/Every.d.ts +5 -0
- package/dist/core/Every.d.ts.map +1 -1
- package/dist/core/Property.d.ts.map +1 -1
- package/dist/core/RealDictionary.d.ts.map +1 -1
- package/dist/core/RealTime.d.ts.map +1 -1
- package/dist/core/Relation.d.ts +5 -0
- package/dist/core/Relation.d.ts.map +1 -1
- package/dist/core/ScopedSequence.d.ts.map +1 -1
- package/dist/core/SideEffect.d.ts.map +1 -1
- package/dist/core/StateMachine.d.ts.map +1 -1
- package/dist/core/StateNode.d.ts.map +1 -1
- package/dist/core/StateTransfer.d.ts.map +1 -1
- package/dist/core/Summation.d.ts +5 -0
- package/dist/core/Summation.d.ts.map +1 -1
- package/dist/core/Transform.d.ts +7 -7
- package/dist/core/Transform.d.ts.map +1 -1
- package/dist/core/WeightedSummation.d.ts.map +1 -1
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/utils.d.ts +5 -0
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/drivers/Mysql.d.ts +2 -1
- package/dist/drivers/Mysql.d.ts.map +1 -1
- package/dist/drivers/PGLite.d.ts.map +1 -1
- package/dist/drivers/PostgreSQL.d.ts +1 -0
- package/dist/drivers/PostgreSQL.d.ts.map +1 -1
- package/dist/index.js +6540 -5985
- package/dist/index.js.map +1 -1
- package/dist/runtime/ComputationSourceMap.d.ts +4 -0
- package/dist/runtime/ComputationSourceMap.d.ts.map +1 -1
- package/dist/runtime/Controller.d.ts +15 -1
- package/dist/runtime/Controller.d.ts.map +1 -1
- package/dist/runtime/MonoSystem.d.ts +2 -0
- package/dist/runtime/MonoSystem.d.ts.map +1 -1
- package/dist/runtime/Scheduler.d.ts +17 -1
- package/dist/runtime/Scheduler.d.ts.map +1 -1
- package/dist/runtime/System.d.ts +2 -0
- package/dist/runtime/System.d.ts.map +1 -1
- package/dist/runtime/computations/Any.d.ts +5 -1
- package/dist/runtime/computations/Any.d.ts.map +1 -1
- package/dist/runtime/computations/Average.d.ts +5 -1
- package/dist/runtime/computations/Average.d.ts.map +1 -1
- package/dist/runtime/computations/Computation.d.ts +58 -0
- package/dist/runtime/computations/Computation.d.ts.map +1 -1
- package/dist/runtime/computations/Count.d.ts +5 -1
- package/dist/runtime/computations/Count.d.ts.map +1 -1
- package/dist/runtime/computations/Custom.d.ts +4 -1
- package/dist/runtime/computations/Custom.d.ts.map +1 -1
- package/dist/runtime/computations/Every.d.ts +5 -1
- package/dist/runtime/computations/Every.d.ts.map +1 -1
- package/dist/runtime/computations/StateMachine.d.ts.map +1 -1
- package/dist/runtime/computations/Summation.d.ts +5 -1
- package/dist/runtime/computations/Summation.d.ts.map +1 -1
- package/dist/runtime/computations/Transform.d.ts +3 -1
- package/dist/runtime/computations/Transform.d.ts.map +1 -1
- package/dist/runtime/computations/WeightedSummation.d.ts +13 -4
- package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -1
- package/dist/runtime/errors/ComputationErrors.d.ts +3 -0
- package/dist/runtime/errors/ComputationErrors.d.ts.map +1 -1
- package/dist/runtime/errors/index.d.ts +1 -1
- package/dist/runtime/errors/index.d.ts.map +1 -1
- package/dist/runtime/migration.d.ts +10 -3
- package/dist/runtime/migration.d.ts.map +1 -1
- package/dist/storage/erstorage/AttributeQuery.d.ts +0 -1
- package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
- package/dist/storage/erstorage/CreationExecutor.d.ts +10 -12
- package/dist/storage/erstorage/CreationExecutor.d.ts.map +1 -1
- package/dist/storage/erstorage/DeletionExecutor.d.ts +15 -10
- package/dist/storage/erstorage/DeletionExecutor.d.ts.map +1 -1
- package/dist/storage/erstorage/EntityToTableMap.d.ts +14 -0
- package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
- package/dist/storage/erstorage/FilteredEntityManager.d.ts +83 -18
- package/dist/storage/erstorage/FilteredEntityManager.d.ts.map +1 -1
- package/dist/storage/erstorage/MatchExp.d.ts +1 -1
- package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
- package/dist/storage/erstorage/MergedItemProcessor.d.ts +29 -15
- package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -1
- package/dist/storage/erstorage/QueryExecutor.d.ts +23 -1
- package/dist/storage/erstorage/QueryExecutor.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordInfo.d.ts +1 -0
- package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -1
- package/dist/storage/erstorage/RecordQueryAgent.d.ts +22 -5
- package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
- package/dist/storage/erstorage/SQLBuilder.d.ts +9 -0
- package/dist/storage/erstorage/SQLBuilder.d.ts.map +1 -1
- package/dist/storage/erstorage/Setup.d.ts +22 -5
- package/dist/storage/erstorage/Setup.d.ts.map +1 -1
- package/dist/storage/erstorage/UpdateExecutor.d.ts +9 -13
- package/dist/storage/erstorage/UpdateExecutor.d.ts.map +1 -1
- package/package.json +2 -2
- package/agent/.claude/settings.local.json +0 -147
- package/dist/builtins/interaction/DataAttributives.d.ts +0 -37
- 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
|
-
*
|
|
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
|
-
|
|
43
|
-
id: string;
|
|
44
|
-
}[]>;
|
|
84
|
+
checkRecordsMatchFilter(recordIds: string[], entityName: string, matchExpression: MatchExpressionData): Promise<Set<string>>;
|
|
45
85
|
/**
|
|
46
|
-
*
|
|
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:
|
|
94
|
+
matchExpression: MatchExpressionData;
|
|
55
95
|
}>;
|
|
56
96
|
/**
|
|
57
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
129
|
+
* 删除结算:按删除前快照为每条记录的每个所属 filtered entity 产生 delete 事件。
|
|
130
|
+
* 事件 push 到 targetEvents(调用方控制排序位置:filtered delete 事件先于记录本身的 delete 事件),
|
|
131
|
+
* 账本仍然按 ledgerEvents(整个操作共享的 events 数组)判重。
|
|
67
132
|
*/
|
|
68
|
-
|
|
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,
|
|
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;
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
36
|
+
* 构建 base/input 树(name -> 直接子孙 names),用于 mergeProperties 的 defaultValue 分发。
|
|
23
37
|
*/
|
|
24
|
-
export declare function
|
|
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;
|
|
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
|
|
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;
|
|
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":"AAAA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAG,CAAC,IAAI,EAAC,gBAAgB,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;CAC7D,CAAA;AAGD,qBAAa,WAAW;
|
|
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
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"RecordQueryAgent.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQueryAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAY,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,OAAO,CAAA;IACZ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B,EAAE,CAAA;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AAEtD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAU;IAIR,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,QAAQ;IAJ7B,OAAO,CAAC,cAAc,CAAsB;gBAGjC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,QAAQ;IAO7B;;;;;;;OAOG;IACH,oBAAoB,CAChB,WAAW,EAAE,WAAW,EACxB,MAAM,SAAK,EACX,OAAO,CAAC,EAAE,cAAc,GACzB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC;
|
|
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
|
-
*
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"Setup.d.ts","sourceRoot":"","sources":["../../../src/storage/erstorage/Setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 {
|
|
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
|
|
20
|
+
private agent;
|
|
22
21
|
private sqlBuilder;
|
|
23
22
|
private filteredEntityManager;
|
|
24
|
-
constructor(map: EntityToTableMap, database: Database, filteredEntityManager: FilteredEntityManager, sqlBuilder: SQLBuilder,
|
|
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":"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;
|
|
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": "^
|
|
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.
|
|
47
|
+
"version": "1.7.0-alpha.0",
|
|
48
48
|
"main": "dist/index.js",
|
|
49
49
|
"files": [
|
|
50
50
|
"dist",
|