@aiao/rxdb 0.0.6 → 0.0.7
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/dist/RxDB.d.ts +116 -18
- package/dist/RxDB.d.ts.map +1 -1
- package/dist/entity/@TreeEntity.d.ts.map +1 -1
- package/dist/entity/EntityBase.d.ts +58 -10
- package/dist/entity/EntityBase.d.ts.map +1 -1
- package/dist/entity/EntityManager.d.ts +16 -5
- package/dist/entity/EntityManager.d.ts.map +1 -1
- package/dist/entity/EntityStatus.d.ts +145 -87
- package/dist/entity/EntityStatus.d.ts.map +1 -1
- package/dist/entity/EntityStatus.interface.d.ts +59 -0
- package/dist/entity/EntityStatus.interface.d.ts.map +1 -0
- package/dist/entity/TreeEntityBase.d.ts +31 -4
- package/dist/entity/TreeEntityBase.d.ts.map +1 -1
- package/dist/entity/entity.interface.d.ts +16 -15
- package/dist/entity/entity.interface.d.ts.map +1 -1
- package/dist/entity/entity.utils.d.ts +21 -0
- package/dist/entity/entity.utils.d.ts.map +1 -1
- package/dist/entity/many_to_many_entity.d.ts.map +1 -1
- package/dist/entity/metadata-options.interface.d.ts +276 -39
- package/dist/entity/metadata-options.interface.d.ts.map +1 -1
- package/dist/entity/{transition-metadata.d.ts → metadata-transition.d.ts} +1 -1
- package/dist/entity/metadata-transition.d.ts.map +1 -0
- package/dist/entity/metadata.interface.d.ts +6 -0
- package/dist/entity/metadata.interface.d.ts.map +1 -1
- package/dist/entity/metadata_cascade_default.d.ts +54 -0
- package/dist/entity/metadata_cascade_default.d.ts.map +1 -0
- package/dist/entity/proxy.d.ts.map +1 -1
- package/dist/entity/relation_helper.d.ts.map +1 -1
- package/dist/entity/tree-entity.interface.d.ts +5 -0
- package/dist/entity/tree-entity.interface.d.ts.map +1 -0
- package/dist/gateway/RxDBTabsGateway.d.ts +52 -0
- package/dist/gateway/RxDBTabsGateway.d.ts.map +1 -0
- package/dist/gateway/gateway.interface.d.ts +43 -0
- package/dist/gateway/gateway.interface.d.ts.map +1 -0
- package/dist/index.d.ts +17 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5786 -1897
- package/dist/query/entity_type_dependencies.d.ts +3 -2
- package/dist/query/entity_type_dependencies.d.ts.map +1 -1
- package/dist/query/merge-update-basic.d.ts +30 -0
- package/dist/query/merge-update-basic.d.ts.map +1 -0
- package/dist/query/merge-update-tree.d.ts +86 -0
- package/dist/query/merge-update-tree.d.ts.map +1 -0
- package/dist/query/merge-update.utils.d.ts +52 -0
- package/dist/query/merge-update.utils.d.ts.map +1 -0
- package/dist/query/merge_create.d.ts +2 -2
- package/dist/query/merge_create.d.ts.map +1 -1
- package/dist/query/merge_remove.d.ts +2 -15
- package/dist/query/merge_remove.d.ts.map +1 -1
- package/dist/query/merge_update.d.ts +2 -2
- package/dist/query/merge_update.d.ts.map +1 -1
- package/dist/query/need_refresh_create.d.ts +4 -4
- package/dist/query/need_refresh_create.d.ts.map +1 -1
- package/dist/query/need_refresh_remove.d.ts +2 -2
- package/dist/query/need_refresh_remove.d.ts.map +1 -1
- package/dist/query/need_refresh_update.d.ts +4 -4
- package/dist/query/need_refresh_update.d.ts.map +1 -1
- package/dist/query/query-matching.utils.d.ts +18 -2
- package/dist/query/query-matching.utils.d.ts.map +1 -1
- package/dist/query/query-relation.utils.d.ts +44 -0
- package/dist/query/query-relation.utils.d.ts.map +1 -0
- package/dist/query/query-rules-builder.d.ts +68 -0
- package/dist/query/query-rules-builder.d.ts.map +1 -0
- package/dist/query/query-tree.utils.d.ts +54 -0
- package/dist/query/query-tree.utils.d.ts.map +1 -0
- package/dist/repository/QueryManager.d.ts +23 -1
- package/dist/repository/QueryManager.d.ts.map +1 -1
- package/dist/repository/QueryTask.d.ts +42 -5
- package/dist/repository/QueryTask.d.ts.map +1 -1
- package/dist/repository/Repository.d.ts +24 -35
- package/dist/repository/Repository.d.ts.map +1 -1
- package/dist/repository/RepositoryBase.d.ts +5 -3
- package/dist/repository/RepositoryBase.d.ts.map +1 -1
- package/dist/repository/TreeRepository.d.ts +28 -1
- package/dist/repository/TreeRepository.d.ts.map +1 -1
- package/dist/repository/fingerprint.utils.d.ts +28 -0
- package/dist/repository/fingerprint.utils.d.ts.map +1 -0
- package/dist/repository/query-options.interface.d.ts +50 -19
- package/dist/repository/query-options.interface.d.ts.map +1 -1
- package/dist/repository/query.interface.d.ts +70 -25
- package/dist/repository/query.interface.d.ts.map +1 -1
- package/dist/repository/relation-query.interface.d.ts +19 -0
- package/dist/repository/relation-query.interface.d.ts.map +1 -1
- package/dist/repository/repository.interface.d.ts +5 -8
- package/dist/repository/repository.interface.d.ts.map +1 -1
- package/dist/repository/tree-repository.interface.d.ts +29 -2
- package/dist/repository/tree-repository.interface.d.ts.map +1 -1
- package/dist/rxdb-adapter.d.ts +96 -14
- package/dist/rxdb-adapter.d.ts.map +1 -1
- package/dist/rxdb-events.d.ts +309 -172
- package/dist/rxdb-events.d.ts.map +1 -1
- package/dist/rxdb-plugin.d.ts +2 -2
- package/dist/rxdb-plugin.d.ts.map +1 -1
- package/dist/rxdb-utils.d.ts +15 -8
- package/dist/rxdb-utils.d.ts.map +1 -1
- package/dist/rxdb.interface.d.ts +4 -0
- package/dist/rxdb.interface.d.ts.map +1 -1
- package/dist/rxdb.private.d.ts +5 -0
- package/dist/rxdb.private.d.ts.map +1 -1
- package/dist/schema/SchemaManager.d.ts +1 -0
- package/dist/schema/SchemaManager.d.ts.map +1 -1
- package/dist/system/branch.d.ts +124 -7
- package/dist/system/branch.d.ts.map +1 -1
- package/dist/system/change.d.ts +605 -30
- package/dist/system/change.d.ts.map +1 -1
- package/dist/system/migration.d.ts +61 -11
- package/dist/system/migration.d.ts.map +1 -1
- package/dist/system/repository-sync.d.ts +95 -0
- package/dist/system/repository-sync.d.ts.map +1 -0
- package/dist/system/system.interface.d.ts +25 -0
- package/dist/system/system.interface.d.ts.map +1 -0
- package/dist/system/types.d.ts +233 -120
- package/dist/system/types.d.ts.map +1 -1
- package/dist/system/types.local.d.ts +156 -0
- package/dist/system/types.local.d.ts.map +1 -0
- package/dist/system/types.remote.d.ts +103 -0
- package/dist/system/types.remote.d.ts.map +1 -0
- package/dist/version/HistoryManager.d.ts +238 -0
- package/dist/version/HistoryManager.d.ts.map +1 -0
- package/dist/version/LWWConflictResolver.d.ts +41 -0
- package/dist/version/LWWConflictResolver.d.ts.map +1 -0
- package/dist/version/VersionManager.d.ts +407 -0
- package/dist/version/VersionManager.d.ts.map +1 -0
- package/dist/version/VersionManager.interface.d.ts +428 -0
- package/dist/version/VersionManager.interface.d.ts.map +1 -0
- package/dist/version/VersionManager.utils.d.ts +14 -0
- package/dist/version/VersionManager.utils.d.ts.map +1 -0
- package/dist/version/bulk-sync.d.ts +97 -0
- package/dist/version/bulk-sync.d.ts.map +1 -0
- package/dist/version/check-repository-updates.d.ts +53 -0
- package/dist/version/check-repository-updates.d.ts.map +1 -0
- package/dist/version/compact-changes.d.ts +45 -0
- package/dist/version/compact-changes.d.ts.map +1 -0
- package/dist/version/conflict.d.ts +75 -0
- package/dist/version/conflict.d.ts.map +1 -0
- package/dist/version/create_branch.d.ts +13 -0
- package/dist/version/create_branch.d.ts.map +1 -0
- package/dist/version/dependency-graph.d.ts +132 -0
- package/dist/version/dependency-graph.d.ts.map +1 -0
- package/dist/version/find_switch_branch_step.d.ts +53 -0
- package/dist/version/find_switch_branch_step.d.ts.map +1 -0
- package/dist/version/get-all-repository-sync-status.d.ts +58 -0
- package/dist/version/get-all-repository-sync-status.d.ts.map +1 -0
- package/dist/version/get-repository-sync-status.d.ts +74 -0
- package/dist/version/get-repository-sync-status.d.ts.map +1 -0
- package/dist/version/pull-repository.d.ts +99 -0
- package/dist/version/pull-repository.d.ts.map +1 -0
- package/dist/version/pull.d.ts +11 -0
- package/dist/version/pull.d.ts.map +1 -0
- package/dist/version/push-repository.d.ts +93 -0
- package/dist/version/push-repository.d.ts.map +1 -0
- package/dist/version/push.d.ts +11 -0
- package/dist/version/push.d.ts.map +1 -0
- package/dist/version/remove_branch.d.ts +8 -0
- package/dist/version/remove_branch.d.ts.map +1 -0
- package/dist/version/switch_branch_actions.d.ts +17 -0
- package/dist/version/switch_branch_actions.d.ts.map +1 -0
- package/dist/version/sync-repository.d.ts +57 -0
- package/dist/version/sync-repository.d.ts.map +1 -0
- package/dist/version/sync-type-utils.d.ts +145 -0
- package/dist/version/sync-type-utils.d.ts.map +1 -0
- package/dist/version/topological-sort.d.ts +70 -0
- package/dist/version/topological-sort.d.ts.map +1 -0
- package/dist/version/version.utils.d.ts +4 -0
- package/dist/version/version.utils.d.ts.map +1 -0
- package/package.json +4 -4
- package/README.md +0 -1
- package/dist/entity/@GraphEntity.d.ts +0 -8
- package/dist/entity/@GraphEntity.d.ts.map +0 -1
- package/dist/entity/GraphEntityBase.d.ts +0 -10
- package/dist/entity/GraphEntityBase.d.ts.map +0 -1
- package/dist/entity/graph_edge_entity.d.ts +0 -5
- package/dist/entity/graph_edge_entity.d.ts.map +0 -1
- package/dist/entity/transition-metadata.d.ts.map +0 -1
- package/dist/system/VersionManager.d.ts +0 -35
- package/dist/system/VersionManager.d.ts.map +0 -1
|
@@ -10,12 +10,13 @@ import { RxDB } from '../RxDB.js';
|
|
|
10
10
|
* - 关系字段(如 user.name):添加关联实体类型
|
|
11
11
|
* - MANY_TO_MANY 关系:额外添加中间表实体类型
|
|
12
12
|
* - keyValue 字段:无额外依赖
|
|
13
|
+
* - EXISTS/NOT EXISTS 操作符:添加关联实体及其子查询依赖
|
|
13
14
|
*
|
|
14
15
|
* @param rxdb RxDB 实例
|
|
15
16
|
* @param where 查询条件
|
|
16
17
|
* @param EntityType 主查询的实体类型
|
|
17
18
|
* @param relationEntityTypes 用于收集依赖实体类型的集合
|
|
18
19
|
*/
|
|
19
|
-
declare const
|
|
20
|
-
export default
|
|
20
|
+
declare const extractEntityTypeDependencies: <T extends EntityType>(rxdb: RxDB, where: RuleGroup<T>, EntityType: EntityType, relationEntityTypes: Set<EntityType>) => void;
|
|
21
|
+
export default extractEntityTypeDependencies;
|
|
21
22
|
//# sourceMappingURL=entity_type_dependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity_type_dependencies.d.ts","sourceRoot":"","sources":["../../src/query/entity_type_dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity_type_dependencies.d.ts","sourceRoot":"","sources":["../../src/query/entity_type_dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAyIlC;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,6BAA6B,GAAI,CAAC,SAAS,UAAU,EACzD,MAAM,IAAI,EACV,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,qBAAqB,GAAG,CAAC,UAAU,CAAC,SA8ErC,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
import { UpdateClassification, UpdateDataCache } from './merge-update.utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* 处理 findAll 查询更新
|
|
6
|
+
*
|
|
7
|
+
* 注意:patch 可能是增量数据(跨 Tab 场景),不是完整实体
|
|
8
|
+
* 因此对于结果集中已有的实体,需要合并 patch 而不是替换
|
|
9
|
+
*/
|
|
10
|
+
export declare const handleFindAllUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
|
|
11
|
+
/**
|
|
12
|
+
* 处理 find 查询更新 (分页查询)
|
|
13
|
+
*/
|
|
14
|
+
export declare const handleFindUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
|
|
15
|
+
/**
|
|
16
|
+
* 处理 findByCursor 查询更新
|
|
17
|
+
*/
|
|
18
|
+
export declare const handleFindByCursorUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
|
|
19
|
+
/**
|
|
20
|
+
* 处理 findOne/findOneOrFail 查询更新
|
|
21
|
+
*
|
|
22
|
+
* 注意:patch 可能是增量数据(跨 Tab 场景),不是完整实体
|
|
23
|
+
* 因此对于当前结果,需要合并 patch 而不是替换
|
|
24
|
+
*/
|
|
25
|
+
export declare const handleFindOneUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* 处理 count 查询更新
|
|
28
|
+
*/
|
|
29
|
+
export declare const handleCountUpdate: <T extends EntityType>(task: QueryTask<T>, classification: UpdateClassification) => void;
|
|
30
|
+
//# sourceMappingURL=merge-update-basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-update-basic.d.ts","sourceRoot":"","sources":["../../src/query/merge-update-basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AAG7F;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,UAAU,EACtD,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SA8C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,oBAAoB,SAgB9G,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,UAAU,EAC3D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,SAiBrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,UAAU,EACtD,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SA8C1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,oBAAoB,SAU/G,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
|
|
4
|
+
import { UpdateClassification, UpdateDataCache } from './merge-update.utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* 处理 findDescendants 查询的增量更新
|
|
7
|
+
*
|
|
8
|
+
* UPDATE 场景下的复杂性:
|
|
9
|
+
* 1. 实体的 parentId 可能变化,导致树形结构重组
|
|
10
|
+
* 2. 实体可能从不是后代变成后代,或从后代变成非后代
|
|
11
|
+
* 3. 实体仍然是后代,但字段值变化(如名称、描述等)
|
|
12
|
+
* 4. 需要考虑 level 限制(只查询特定层级的后代)
|
|
13
|
+
*
|
|
14
|
+
* 更新策略:
|
|
15
|
+
* - 移除: 不再匹配 where 条件 或 不再是后代 或 超出 level 范围
|
|
16
|
+
* - 更新: 仍在结果集中的实体,更新其字段值
|
|
17
|
+
* - 添加: 新匹配 where 条件 且 成为后代 且 在 level 范围内
|
|
18
|
+
*
|
|
19
|
+
* @param task 查询任务
|
|
20
|
+
* @param data 更新的实体数据列表
|
|
21
|
+
* @param classification 更新分类结果
|
|
22
|
+
* @param cache 更新数据缓存
|
|
23
|
+
*/
|
|
24
|
+
export declare const handleFindDescendantsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
|
|
25
|
+
/**
|
|
26
|
+
* 处理 findAncestors 查询的增量更新
|
|
27
|
+
*
|
|
28
|
+
* UPDATE 场景下的复杂性:
|
|
29
|
+
* 1. 目标实体的祖先链路可能因为其他实体的 parentId 变化而改变
|
|
30
|
+
* 2. 实体可能从不是祖先变成祖先,或从祖先变成非祖先
|
|
31
|
+
* 3. 实体仍然是祖先,但字段值变化
|
|
32
|
+
* 4. 目标实体本身也是结果的一部分(level=0)
|
|
33
|
+
*
|
|
34
|
+
* 特殊情况:
|
|
35
|
+
* - 如果目标实体的 parentId 变化,整个祖先链都会改变,需要完全刷新
|
|
36
|
+
*
|
|
37
|
+
* @param task 查询任务
|
|
38
|
+
* @param data 更新的实体数据列表
|
|
39
|
+
* @param classification 更新分类结果
|
|
40
|
+
* @param cache 更新数据缓存
|
|
41
|
+
*/
|
|
42
|
+
export declare const handleFindAncestorsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>) => void;
|
|
43
|
+
/**
|
|
44
|
+
* 处理 countDescendants 查询的增量更新
|
|
45
|
+
*
|
|
46
|
+
* 计数查询的特点:
|
|
47
|
+
* - 只需要返回数量,不需要返回具体实体
|
|
48
|
+
* - 需要精确计算增减变化
|
|
49
|
+
* - 如果无法确定关系(父实体链中断),则触发 SQL 刷新
|
|
50
|
+
*
|
|
51
|
+
* UPDATE 场景下的计数变化:
|
|
52
|
+
* 1. 实体的 parentId 变化 → 可能从非后代变为后代,或相反
|
|
53
|
+
* 2. 实体从不匹配变为匹配 where 条件 → 如果是后代,计数+1
|
|
54
|
+
* 3. 实体从匹配变为不匹配 where 条件 → 如果是后代,计数-1
|
|
55
|
+
*
|
|
56
|
+
* @param task 查询任务
|
|
57
|
+
* @param data 更新的实体数据列表
|
|
58
|
+
* @param classification 更新分类结果
|
|
59
|
+
* @param cache 更新数据缓存
|
|
60
|
+
* @param where where 条件
|
|
61
|
+
* @param isEntityMatchWhere 检查实体是否匹配 where 条件的函数
|
|
62
|
+
*/
|
|
63
|
+
export declare const handleCountDescendantsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>, where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => void;
|
|
64
|
+
/**
|
|
65
|
+
* 处理 countAncestors 查询的增量更新
|
|
66
|
+
*
|
|
67
|
+
* 计数查询的特点:
|
|
68
|
+
* - 只需要返回数量,不需要返回具体实体
|
|
69
|
+
* - 需要精确计算增减变化
|
|
70
|
+
* - 如果无法确定关系(父实体链中断)或目标实体的 parentId 变化,则触发 SQL 刷新
|
|
71
|
+
*
|
|
72
|
+
* UPDATE 场景下的计数变化:
|
|
73
|
+
* 1. 目标实体的 parentId 变化 → 整个祖先链改变,必须触发刷新
|
|
74
|
+
* 2. 其他实体的 parentId 变化 → 可能从非祖先变为祖先,或相反
|
|
75
|
+
* 3. 实体从不匹配变为匹配 where 条件 → 如果是祖先,计数+1
|
|
76
|
+
* 4. 实体从匹配变为不匹配 where 条件 → 如果是祖先,计数-1
|
|
77
|
+
*
|
|
78
|
+
* @param task 查询任务
|
|
79
|
+
* @param data 更新的实体数据列表
|
|
80
|
+
* @param classification 更新分类结果
|
|
81
|
+
* @param cache 更新数据缓存
|
|
82
|
+
* @param where where 条件
|
|
83
|
+
* @param isEntityMatchWhere 检查实体是否匹配 where 条件的函数
|
|
84
|
+
*/
|
|
85
|
+
export declare const handleCountAncestorsUpdate: <T extends EntityType>(task: QueryTask<T>, data: RxDBEntityLocalUpdatedEventData<T>[], classification: UpdateClassification, cache: UpdateDataCache<T>, where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => void;
|
|
86
|
+
//# sourceMappingURL=merge-update-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-update-tree.d.ts","sourceRoot":"","sources":["../../src/query/merge-update-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAe,MAAM,yBAAyB,CAAC;AA6O7F;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,UAAU,EAC9D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SAwI1B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,EAC5D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,SAyI1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,UAAU,EAC/D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,SA+DzD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,UAAU,EAC7D,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,oBAAoB,EACpC,OAAO,eAAe,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,SAwHzD,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
|
|
3
|
+
/**
|
|
4
|
+
* 获取实体 ID
|
|
5
|
+
*/
|
|
6
|
+
export declare const getEntityId: (entity: any) => string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* 更新数据的缓存管理器
|
|
9
|
+
* 用于缓存序列化后的实体数据,避免重复序列化
|
|
10
|
+
*/
|
|
11
|
+
export declare class UpdateDataCache<T extends EntityType> {
|
|
12
|
+
private serialize;
|
|
13
|
+
private dataById;
|
|
14
|
+
private serializedUpdateCache;
|
|
15
|
+
private serializedBeforeCache;
|
|
16
|
+
constructor(data: RxDBEntityLocalUpdatedEventData<T>[], serialize: (event: RxDBEntityLocalUpdatedEventData<T>) => InstanceType<T>);
|
|
17
|
+
/**
|
|
18
|
+
* 获取序列化后的更新数据
|
|
19
|
+
*/
|
|
20
|
+
getSerializedUpdate(id: string): InstanceType<T> | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* 获取序列化后的更新前数据
|
|
23
|
+
*/
|
|
24
|
+
getSerializedBefore(id: string, inversePatch: any): InstanceType<T> | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* 获取原始更新数据
|
|
27
|
+
*/
|
|
28
|
+
getData(id: string): RxDBEntityLocalUpdatedEventData<T> | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 更新分类结果
|
|
32
|
+
*/
|
|
33
|
+
export interface UpdateClassification {
|
|
34
|
+
/** 更新的实体 ID 集合 */
|
|
35
|
+
updatedIds: Set<string>;
|
|
36
|
+
/** 当前匹配条件的实体 ID */
|
|
37
|
+
matchNowIds: Set<string>;
|
|
38
|
+
/** 更新前匹配条件的实体 ID */
|
|
39
|
+
matchBeforeIds: Set<string>;
|
|
40
|
+
/** 从 "不匹配" 变为 "匹配" 的实体 */
|
|
41
|
+
newlyMatchedIds: Set<string>;
|
|
42
|
+
/** 从 "匹配" 变为 "不匹配" 的实体 */
|
|
43
|
+
newlyUnmatchedIds: Set<string>;
|
|
44
|
+
/** 更新前后都匹配的实体 */
|
|
45
|
+
stillMatchedIds: Set<string>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 分类更新的实体
|
|
49
|
+
* 根据 where 条件判断实体的匹配状态变化
|
|
50
|
+
*/
|
|
51
|
+
export declare const classifyUpdates: <T extends EntityType>(data: RxDBEntityLocalUpdatedEventData<T>[], where: any, isEntityMatchWhere: (entity: any, where: any) => boolean) => UpdateClassification;
|
|
52
|
+
//# sourceMappingURL=merge-update.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-update.utils.d.ts","sourceRoot":"","sources":["../../src/query/merge-update.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,KAAG,MAAM,GAAG,SAGlD,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,UAAU;IAO7C,OAAO,CAAC,SAAS;IANnB,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,qBAAqB,CAAsC;gBAGjE,IAAI,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAClC,SAAS,EAAE,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC;IAKnF;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAa5D;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAS/E;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B,CAAC,CAAC,CAAC,GAAG,SAAS;CAGpE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,mBAAmB;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,oBAAoB;IACpB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,0BAA0B;IAC1B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,0BAA0B;IAC1B,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB;IACjB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,UAAU,EAClD,MAAM,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC1C,OAAO,GAAG,EACV,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,KACvD,oBAiCF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RxDBEntityLocalCreatedEventData } from '../rxdb-events.js';
|
|
4
4
|
/**
|
|
5
5
|
* 处理 CREATE 事件的缓存合并逻辑
|
|
6
6
|
*
|
|
@@ -14,6 +14,6 @@ import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
|
|
|
14
14
|
* @param task 查询任务
|
|
15
15
|
* @param entities 创建的实体事件数据
|
|
16
16
|
*/
|
|
17
|
-
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities:
|
|
17
|
+
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalCreatedEventData<T>[]) => void;
|
|
18
18
|
export default _default;
|
|
19
19
|
//# sourceMappingURL=merge_create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge_create.d.ts","sourceRoot":"","sources":["../../src/query/merge_create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"merge_create.d.ts","sourceRoot":"","sources":["../../src/query/merge_create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAoKpE;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAyCE"}
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
* 处理 REMOVE 事件的缓存合并逻辑
|
|
6
|
-
*
|
|
7
|
-
* 不同查询类型的删除策略:
|
|
8
|
-
* - findAll: JS 直接移除
|
|
9
|
-
* - find: SQL 刷新(需要补充数据)
|
|
10
|
-
* - findByCursor: JS 直接移除
|
|
11
|
-
* - findOne/findOneOrFail: SQL 刷新(如果当前结果被删除)
|
|
12
|
-
* - count: JS 简单减法
|
|
13
|
-
*
|
|
14
|
-
* @param task 查询任务
|
|
15
|
-
* @param entities 删除的实体事件数据
|
|
16
|
-
*/
|
|
17
|
-
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityRemovedEventData<T>[]) => void;
|
|
3
|
+
import { RxDBEntityLocalRemovedEventData } from '../rxdb-events.js';
|
|
4
|
+
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalRemovedEventData<T>[]) => void;
|
|
18
5
|
export default _default;
|
|
19
6
|
//# sourceMappingURL=merge_remove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge_remove.d.ts","sourceRoot":"","sources":["../../src/query/merge_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"merge_remove.d.ts","sourceRoot":"","sources":["../../src/query/merge_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;yBA6FpD,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAqCE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
|
|
4
4
|
/**
|
|
5
5
|
* 处理 UPDATE 事件的缓存合并逻辑
|
|
6
6
|
*
|
|
@@ -19,6 +19,6 @@ import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
|
|
|
19
19
|
* @param task 查询任务
|
|
20
20
|
* @param entities 更新的实体事件数据
|
|
21
21
|
*/
|
|
22
|
-
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities:
|
|
22
|
+
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityLocalUpdatedEventData<T>[]) => void;
|
|
23
23
|
export default _default;
|
|
24
24
|
//# sourceMappingURL=merge_update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge_update.d.ts","sourceRoot":"","sources":["../../src/query/merge_update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"merge_update.d.ts","sourceRoot":"","sources":["../../src/query/merge_update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AA2EpE;;;;;;;;;;;;;;;;;GAiBG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,+BAA+B,CAAC,CAAC,CAAC,EAAE;AAAxG,wBAwJE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
3
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare const query_need_refresh_create: <T extends EntityType =
|
|
6
|
-
current_entities:
|
|
7
|
-
relation_entities:
|
|
4
|
+
import { RxDBEntityLocalCreatedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_create: <T extends EntityType = EntityType>(task: QueryTask<T>, changes: RxDBEntityLocalCreatedEventData<T>[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => {
|
|
6
|
+
current_entities: RxDBEntityLocalCreatedEventData<T>[];
|
|
7
|
+
relation_entities: RxDBEntityLocalCreatedEventData<T>[];
|
|
8
8
|
refresh: boolean;
|
|
9
9
|
recalculate: boolean;
|
|
10
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"need_refresh_create.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"need_refresh_create.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAQpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,UAAU,EACzE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAC7C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CA6CrC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
3
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare const query_need_refresh_remove: <T extends EntityType = any>(task: QueryTask<T>, changes:
|
|
4
|
+
import { RxDBEntityLocalRemovedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_remove: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityLocalRemovedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult;
|
|
6
6
|
//# sourceMappingURL=need_refresh_remove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"need_refresh_remove.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_remove.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"need_refresh_remove.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAIpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,EAAE,EAC1C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,0DAQrC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
3
|
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare const query_need_refresh_update: <T extends EntityType = any>(task: QueryTask<T>, changes:
|
|
6
|
-
current_entities:
|
|
7
|
-
relation_entities:
|
|
4
|
+
import { RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_update: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityLocalUpdatedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult | {
|
|
6
|
+
current_entities: RxDBEntityLocalUpdatedEventData<EntityType>[];
|
|
7
|
+
relation_entities: RxDBEntityLocalUpdatedEventData<EntityType>[];
|
|
8
8
|
refresh: boolean;
|
|
9
9
|
recalculate: boolean;
|
|
10
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"need_refresh_update.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"need_refresh_update.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAQpE,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,+BAA+B,EAAE,EAC1C,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAiDrC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityType } from '../entity/entity.interface.js';
|
|
2
2
|
import { OrderBy } from '../repository/query-options.interface.js';
|
|
3
|
-
import { RuleGroup } from '../repository/query.interface.js';
|
|
3
|
+
import { Rule, RuleGroup } from '../repository/query.interface.js';
|
|
4
4
|
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
5
5
|
/**
|
|
6
6
|
* 计算结果
|
|
@@ -17,12 +17,28 @@ export interface NeedRefreshResult {
|
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* 判断是否是 RuleGroup
|
|
20
|
+
* @param value - 要检查的值
|
|
21
|
+
* @returns 如果是 RuleGroup 则返回 true,否则返回 false
|
|
20
22
|
*/
|
|
21
23
|
export declare const isRuleGroup: (value: unknown) => value is RuleGroup<any>;
|
|
24
|
+
/**
|
|
25
|
+
* 判断是否是 Rule
|
|
26
|
+
* @param value - 要检查的值
|
|
27
|
+
* @returns 如果是 Rule 则返回 true,否则返回 false
|
|
28
|
+
*/
|
|
29
|
+
export declare const isRule: (value: unknown) => value is Rule<any>;
|
|
30
|
+
/**
|
|
31
|
+
* 判断是否是 EXISTS/NOT EXISTS 规则
|
|
32
|
+
* @param rule - 要检查的规则
|
|
33
|
+
* @returns 如果是 EXISTS/NOT EXISTS 规则则返回 true,否则返回 false
|
|
34
|
+
*/
|
|
35
|
+
export declare const isExistsRule: <T extends EntityType>(rule: Rule<T>) => rule is Extract<Rule<T>, {
|
|
36
|
+
operator: "exists" | "notExists";
|
|
37
|
+
}>;
|
|
22
38
|
/**
|
|
23
39
|
* 判断实体是否匹配规则组
|
|
24
40
|
*/
|
|
25
|
-
export declare const isEntityMatchWhere:
|
|
41
|
+
export declare const isEntityMatchWhere: (entity: any, ruleGroup: RuleGroup<any>) => boolean;
|
|
26
42
|
/**
|
|
27
43
|
* 判断 entity 是否影响排序后的结果中
|
|
28
44
|
* @param entities 排序后的结果
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-matching.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-matching.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"query-matching.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-matching.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAAS,CAAC,GAAG,CAChB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAA4C,CAAC;AAEtG;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,UAAU,EAC/C,MAAM,IAAI,CAAC,CAAC,CAAC,KACZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAA;CAAE,CACH,CAAC;AA8H9D;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,GAAG,EAAE,WAAW,SAAS,CAAC,GAAG,CAAC,KAAG,OAO3E,CAAC;AAmCF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,UAAU,EACxD,QAAQ,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAC7B,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EACzB,cAAc,OAAO,CAAC,MAAM,CAAC,EAAE,wBAgBhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,sBAQ3G,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAA;CAAE,EACzC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,KACnC,iBAcF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { EntityMetadata } from '../entity/metadata.interface.js';
|
|
3
|
+
import { RuleGroup } from '../repository/query.interface.js';
|
|
4
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
5
|
+
import { RxDBEntityLocalEventData } from '../rxdb-events.js';
|
|
6
|
+
/**
|
|
7
|
+
* 检查关系实体是否与查询结果集相关
|
|
8
|
+
*
|
|
9
|
+
* 增强版:使用依赖提取器精确识别查询依赖的实体类型
|
|
10
|
+
* 特别支持 EXISTS 操作符的依赖跟踪
|
|
11
|
+
*
|
|
12
|
+
* @param task 查询任务
|
|
13
|
+
* @param relation_entity 关系实体(包含 entity 和 namespace)
|
|
14
|
+
* @returns 如果关系实体与查询相关则返回 true
|
|
15
|
+
*/
|
|
16
|
+
export declare function isRelationEntityRelated<T extends EntityType>(task: QueryTask<T>, relation_entity: {
|
|
17
|
+
entity: string;
|
|
18
|
+
namespace: string;
|
|
19
|
+
}): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* 分离当前实体和关系实体
|
|
22
|
+
*
|
|
23
|
+
* 增强版:支持自引用关系的特殊处理
|
|
24
|
+
* 当查询使用 EXISTS 且存在自引用关系时,同一实体可能同时是:
|
|
25
|
+
* - current_entities:直接匹配查询条件的主实体
|
|
26
|
+
* - relation_entities:作为其他实体的关联实体
|
|
27
|
+
*
|
|
28
|
+
* @param task 查询任务
|
|
29
|
+
* @param changes 变更的实体列表
|
|
30
|
+
* @returns 分离后的当前实体和关系实体
|
|
31
|
+
*/
|
|
32
|
+
export declare function separateEntities<T extends EntityType, CT extends RxDBEntityLocalEventData>(task: QueryTask<T>, changes: CT[]): {
|
|
33
|
+
current_entities: CT[];
|
|
34
|
+
relation_entities: CT[];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* 检测 where 条件是否使用了关系字段
|
|
38
|
+
*
|
|
39
|
+
* @param where where 条件对象
|
|
40
|
+
* @param metadata 实体元数据
|
|
41
|
+
* @returns 如果 where 条件使用了关系字段则返回 true
|
|
42
|
+
*/
|
|
43
|
+
export declare function whereUsesRelations(where: RuleGroup<any>, metadata: EntityMetadata): boolean;
|
|
44
|
+
//# sourceMappingURL=query-relation.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-relation.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-relation.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAK7D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAC1D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,eAAe,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CA+BT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,SAAS,wBAAwB,EACxF,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,EAAE,EAAE,GACZ;IACD,gBAAgB,EAAE,EAAE,EAAE,CAAC;IACvB,iBAAiB,EAAE,EAAE,EAAE,CAAC;CACzB,CA+BA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAuB3F"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
/**
|
|
4
|
+
* 规则匹配结果
|
|
5
|
+
*/
|
|
6
|
+
export interface QueryRules {
|
|
7
|
+
[key: string]: () => boolean;
|
|
8
|
+
match_where: () => boolean;
|
|
9
|
+
not_match_where: () => boolean;
|
|
10
|
+
match_relation_where: () => boolean;
|
|
11
|
+
not_match_relation_where: () => boolean;
|
|
12
|
+
result_contains: () => boolean;
|
|
13
|
+
result_not_contains: () => boolean;
|
|
14
|
+
match_order_by: () => boolean;
|
|
15
|
+
match_where_before: () => boolean;
|
|
16
|
+
not_match_where_before: () => boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 规则构建器 - 统一处理不同事件类型的规则
|
|
20
|
+
*/
|
|
21
|
+
export declare class QueryRulesBuilder<T extends EntityType> {
|
|
22
|
+
private task;
|
|
23
|
+
private current_entities;
|
|
24
|
+
private hasRelationChanges;
|
|
25
|
+
private whereUsesRelations;
|
|
26
|
+
private entityIds;
|
|
27
|
+
constructor(task: QueryTask<T>, current_entities: any[], hasRelationChanges: boolean, whereUsesRelations?: boolean);
|
|
28
|
+
/**
|
|
29
|
+
* 构建完整规则集(CREATE)
|
|
30
|
+
*/
|
|
31
|
+
buildCreateRules(): QueryRules;
|
|
32
|
+
/**
|
|
33
|
+
* 构建完整规则集(UPDATE)
|
|
34
|
+
*/
|
|
35
|
+
buildUpdateRules(): QueryRules;
|
|
36
|
+
/**
|
|
37
|
+
* 构建完整规则集(REMOVE)
|
|
38
|
+
*/
|
|
39
|
+
buildRemoveRules(): QueryRules;
|
|
40
|
+
/**
|
|
41
|
+
* 构建 match_where 规则(适用于 CREATE/UPDATE)
|
|
42
|
+
*/
|
|
43
|
+
private buildMatchWhere;
|
|
44
|
+
/**
|
|
45
|
+
* 构建 result_contains 规则
|
|
46
|
+
*/
|
|
47
|
+
private buildResultContains;
|
|
48
|
+
/**
|
|
49
|
+
* 构建关系匹配规则(CREATE 场景)
|
|
50
|
+
*
|
|
51
|
+
* CREATE 场景:只要有关系实体变更就应该触发刷新
|
|
52
|
+
* 因为新增的关系实体可能影响 EXISTS 查询或其他依赖关系
|
|
53
|
+
*/
|
|
54
|
+
private buildRelationWhereRulesForCreate;
|
|
55
|
+
/**
|
|
56
|
+
* 构建关系匹配规则(UPDATE 场景)
|
|
57
|
+
*
|
|
58
|
+
* UPDATE 场景:需要更严格的条件
|
|
59
|
+
* 只有当 where 条件使用了关系字段,且有关系实体变更时,才触发刷新
|
|
60
|
+
* 这样可以避免自引用场景下不必要的刷新(跨 Tab 同步时同一实体被放入 relation_entities)
|
|
61
|
+
*/
|
|
62
|
+
private buildRelationWhereRulesForUpdate;
|
|
63
|
+
/**
|
|
64
|
+
* 构建排序规则(仅用于 CREATE)
|
|
65
|
+
*/
|
|
66
|
+
private buildOrderByRule;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=query-rules-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-rules-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-rules-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,wBAAwB,EAAE,MAAM,OAAO,CAAC;IACxC,eAAe,EAAE,MAAM,OAAO,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,OAAO,CAAC;IAC9B,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,sBAAsB,EAAE,MAAM,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,UAAU;IAI/C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,kBAAkB;IAN5B,OAAO,CAAC,SAAS,CAAiB;gBAGxB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,gBAAgB,EAAE,GAAG,EAAE,EACvB,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,GAAE,OAAe;IAK7C;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAsB9B;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAuB9B;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAmB9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IASxC;;;;;;OAMG;IACH,OAAO,CAAC,gCAAgC;IASxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;CASzB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
/**
|
|
3
|
+
* 树形遍历配置
|
|
4
|
+
*/
|
|
5
|
+
interface TreeTraversalOptions {
|
|
6
|
+
maxLevel?: number;
|
|
7
|
+
maxDepth?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 获取实体的父级 ID
|
|
11
|
+
* 处理 parentId 可能是对象或字符串的情况
|
|
12
|
+
*/
|
|
13
|
+
export declare const get_tree_parent_id: <T extends EntityType>(entity: InstanceType<T>) => EntityStaticType<T, "idType"> | null;
|
|
14
|
+
/**
|
|
15
|
+
* 向上遍历父级链路
|
|
16
|
+
*
|
|
17
|
+
* @param entity 起始实体
|
|
18
|
+
* @param entitiesMap 实体 ID 映射表
|
|
19
|
+
* @param options 遍历配置
|
|
20
|
+
* @yields 每一层的父级实体和层级
|
|
21
|
+
*/
|
|
22
|
+
export declare function traverseAncestors<T extends EntityType>(entity: InstanceType<T>, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>, options?: TreeTraversalOptions): Generator<{
|
|
23
|
+
entity: InstanceType<T>;
|
|
24
|
+
level: number;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* 检查实体是否是目标实体的后代
|
|
28
|
+
*
|
|
29
|
+
* @param entity 要检查的实体
|
|
30
|
+
* @param targetId 目标实体 ID (为 null 或 undefined 时表示查找根节点)
|
|
31
|
+
* @param entitiesMap 实体 ID 映射表
|
|
32
|
+
* @param maxLevel 最大层级 (undefined 或 0 表示无限制)
|
|
33
|
+
* @returns 如果是后代则返回 true
|
|
34
|
+
*/
|
|
35
|
+
export declare function isDescendantOf<T extends EntityType>(entity: InstanceType<T>, targetId: EntityStaticType<T, 'idType'> | null | undefined, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>, maxLevel?: number): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 检查实体是否是目标实体的祖先
|
|
38
|
+
*
|
|
39
|
+
* @param candidateEntity 候选祖先实体
|
|
40
|
+
* @param targetId 目标实体 ID
|
|
41
|
+
* @param entitiesMap 实体 ID 映射表
|
|
42
|
+
* @returns 如果是祖先则返回 true
|
|
43
|
+
*/
|
|
44
|
+
export declare function isAncestorOf<T extends EntityType>(candidateEntity: InstanceType<T>, targetId: EntityStaticType<T, 'idType'>, entitiesMap: Map<EntityStaticType<T, 'idType'>, InstanceType<T>>): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 构建实体 ID 映射表(优化查找性能)
|
|
47
|
+
*
|
|
48
|
+
* @param entities 实体数组
|
|
49
|
+
* @param getIdFn 获取实体 ID 的函数
|
|
50
|
+
* @returns 实体 ID 到实体的映射表
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildEntityMap<T extends EntityType>(entities: InstanceType<T>[], getIdFn: (e: InstanceType<T>) => EntityStaticType<T, 'idType'>): Map<EntityStaticType<T, 'idType'>, InstanceType<T>>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=query-tree.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-tree.utils.d.ts","sourceRoot":"","sources":["../../src/query/query-tree.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;GAEG;AACH,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EACrD,QAAQ,YAAY,CAAC,CAAC,CAAC,KACtB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAgC,CAAC;AAEpE;;;;;;;GAOG;AACH,wBAAiB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACrD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAChE,OAAO,GAAE,oBAAyB,GACjC,SAAS,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,EAC1D,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAChE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAkCT;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAC/C,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,EAChC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EACvC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,GAC/D,OAAO,CAWT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EACjD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC7D,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAOrD"}
|
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { EntityType } from '../entity/entity.interface.js';
|
|
3
|
+
import { RxDBEntityLocalCreatedEventData, RxDBEntityLocalRemovedEventData, RxDBEntityLocalUpdatedEventData } from '../rxdb-events.js';
|
|
3
4
|
import { RxDB } from '../RxDB.js';
|
|
4
5
|
import { QueryOptions } from './QueryManager.interface.js';
|
|
5
6
|
import { QueryTask } from './QueryTask.js';
|
|
6
7
|
import { Repository } from './Repository.js';
|
|
8
|
+
export type MergeQueryTaskCreateFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalCreatedEventData<T>[]) => void;
|
|
9
|
+
export type MergeQueryTaskUpdateFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalUpdatedEventData<T>[]) => void;
|
|
10
|
+
export type MergeQueryTaskRemoveFn<T extends EntityType = any> = (task: QueryTask<T>, entities: RxDBEntityLocalRemovedEventData<T>[]) => void;
|
|
11
|
+
interface CreateTaskOptions<T extends EntityType, RT> {
|
|
12
|
+
/**
|
|
13
|
+
* 查询选项
|
|
14
|
+
*/
|
|
15
|
+
options: QueryOptions<T>;
|
|
16
|
+
/**
|
|
17
|
+
* 查询执行函数
|
|
18
|
+
*/
|
|
19
|
+
runner: (options?: QueryOptions<T>) => Observable<RT>;
|
|
20
|
+
/**
|
|
21
|
+
* 结果指纹计算方法
|
|
22
|
+
*/
|
|
23
|
+
getFingerprint: (result: any) => any[];
|
|
24
|
+
}
|
|
7
25
|
/**
|
|
8
26
|
* 查询缓存管理器
|
|
9
27
|
*
|
|
@@ -42,6 +60,10 @@ export declare class QueryManager<T extends EntityType> {
|
|
|
42
60
|
* @param taskOptions 查询任务选项
|
|
43
61
|
* @returns 查询任务对象,包含 result$ 用于订阅查询结果
|
|
44
62
|
*/
|
|
45
|
-
createTask<RT = any>(
|
|
63
|
+
createTask<RT = any>(taskOptions: CreateTaskOptions<T, RT>): QueryTask<T>;
|
|
64
|
+
registerMergeCreateFn(taskType: string, fn: MergeQueryTaskCreateFn<T>): void;
|
|
65
|
+
registerMergeUpdateFn(taskType: string, fn: MergeQueryTaskUpdateFn<T>): void;
|
|
66
|
+
registerMergeRemoveFn(taskType: string, fn: MergeQueryTaskRemoveFn<T>): void;
|
|
46
67
|
}
|
|
68
|
+
export {};
|
|
47
69
|
//# sourceMappingURL=QueryManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/repository/QueryManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/repository/QueryManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,OAAO,EAOL,+BAA+B,EAE/B,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI,CAC/D,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC;AAEV,UAAU,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE;IAClD;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;IACtD;;OAEG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;CACxC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU;;IAkB1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;IAC7B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAV9C;;;;;;OAMG;gBAEkB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAQ9C;;;;;;;;;;OAUG;IACI,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAehF,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAIrE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAIrE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;CAmKtE"}
|