@aiao/rxdb 0.0.5 → 0.0.6
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 +5 -6
- package/dist/RxDB.d.ts.map +1 -1
- package/dist/RxDBError.d.ts.map +1 -1
- package/dist/entity/@Entity.d.ts +1 -1
- package/dist/entity/@Entity.d.ts.map +1 -1
- package/dist/entity/@GraphEntity.d.ts +8 -0
- package/dist/entity/@GraphEntity.d.ts.map +1 -0
- package/dist/entity/@TreeEntity.d.ts +2 -21
- package/dist/entity/@TreeEntity.d.ts.map +1 -1
- package/dist/entity/EntityBase.d.ts +1 -1
- package/dist/entity/EntityBase.d.ts.map +1 -1
- package/dist/entity/EntityManager.d.ts +2 -20
- package/dist/entity/EntityManager.d.ts.map +1 -1
- package/dist/entity/EntityStatus.d.ts +9 -25
- package/dist/entity/EntityStatus.d.ts.map +1 -1
- package/dist/entity/GraphEntityBase.d.ts +10 -0
- package/dist/entity/GraphEntityBase.d.ts.map +1 -0
- package/dist/entity/TreeEntityBase.d.ts +2 -2
- package/dist/entity/TreeEntityBase.d.ts.map +1 -1
- package/dist/entity/entity.interface.d.ts +8 -20
- package/dist/entity/entity.interface.d.ts.map +1 -1
- package/dist/entity/entity.utils.d.ts +2 -2
- package/dist/entity/entity.utils.d.ts.map +1 -1
- package/dist/entity/graph_edge_entity.d.ts +5 -0
- package/dist/entity/graph_edge_entity.d.ts.map +1 -0
- package/dist/entity/{generate_many_to_many_entity.d.ts → many_to_many_entity.d.ts} +3 -3
- package/dist/entity/many_to_many_entity.d.ts.map +1 -0
- package/dist/entity/{entity-metadata-options.interface.d.ts → metadata-options.interface.d.ts} +67 -27
- package/dist/entity/metadata-options.interface.d.ts.map +1 -0
- package/dist/entity/{entity-metadata.interface.d.ts → metadata.interface.d.ts} +2 -2
- package/dist/entity/metadata.interface.d.ts.map +1 -0
- package/dist/entity/proxy.d.ts +7 -0
- package/dist/entity/proxy.d.ts.map +1 -0
- package/dist/entity/{entity_relation_helper.d.ts → relation_helper.d.ts} +2 -2
- package/dist/entity/relation_helper.d.ts.map +1 -0
- package/dist/entity/transition-metadata.d.ts +2 -2
- package/dist/entity/transition-metadata.d.ts.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2193 -2379
- package/dist/query/entity_type_dependencies.d.ts +21 -0
- package/dist/query/entity_type_dependencies.d.ts.map +1 -0
- package/dist/query/merge_create.d.ts +19 -0
- package/dist/query/merge_create.d.ts.map +1 -0
- package/dist/query/merge_remove.d.ts +19 -0
- package/dist/query/merge_remove.d.ts.map +1 -0
- package/dist/query/merge_update.d.ts +24 -0
- package/dist/query/merge_update.d.ts.map +1 -0
- package/dist/query/need_refresh_create.d.ts +11 -0
- package/dist/query/need_refresh_create.d.ts.map +1 -0
- package/dist/query/need_refresh_remove.d.ts +6 -0
- package/dist/query/need_refresh_remove.d.ts.map +1 -0
- package/dist/query/need_refresh_update.d.ts +11 -0
- package/dist/query/need_refresh_update.d.ts.map +1 -0
- package/dist/query/query-matching.utils.d.ts +44 -0
- package/dist/query/query-matching.utils.d.ts.map +1 -0
- package/dist/repository/QueryManager.d.ts +47 -0
- package/dist/repository/QueryManager.d.ts.map +1 -0
- package/dist/repository/QueryManager.interface.d.ts +106 -0
- package/dist/repository/QueryManager.interface.d.ts.map +1 -0
- package/dist/repository/QueryTask.d.ts +113 -0
- package/dist/repository/QueryTask.d.ts.map +1 -0
- package/dist/repository/Repository.d.ts +27 -22
- package/dist/repository/Repository.d.ts.map +1 -1
- package/dist/repository/RepositoryBase.d.ts +5 -7
- package/dist/repository/RepositoryBase.d.ts.map +1 -1
- package/dist/repository/TreeRepository.d.ts +2 -4
- package/dist/repository/TreeRepository.d.ts.map +1 -1
- package/dist/repository/query-options.interface.d.ts +41 -0
- package/dist/repository/query-options.interface.d.ts.map +1 -1
- package/dist/repository/query.interface.d.ts +52 -27
- package/dist/repository/query.interface.d.ts.map +1 -1
- package/dist/repository/relation-query.interface.d.ts +1 -1
- package/dist/repository/relation-query.interface.d.ts.map +1 -1
- package/dist/repository/repository.interface.d.ts +4 -26
- package/dist/repository/repository.interface.d.ts.map +1 -1
- package/dist/repository/tree-repository.interface.d.ts +6 -29
- package/dist/repository/tree-repository.interface.d.ts.map +1 -1
- package/dist/rxdb-adapter.d.ts +4 -2
- package/dist/rxdb-adapter.d.ts.map +1 -1
- package/dist/rxdb-events.d.ts +184 -52
- package/dist/rxdb-events.d.ts.map +1 -1
- package/dist/rxdb-utils.d.ts +5 -1
- package/dist/rxdb-utils.d.ts.map +1 -1
- package/dist/rxdb.interface.d.ts +1 -9
- package/dist/rxdb.interface.d.ts.map +1 -1
- package/dist/rxdb.private.d.ts +2 -36
- package/dist/rxdb.private.d.ts.map +1 -1
- package/dist/schema/SchemaManager.d.ts +4 -4
- package/dist/schema/SchemaManager.d.ts.map +1 -1
- package/dist/system/VersionManager.d.ts +1 -1
- package/dist/system/VersionManager.d.ts.map +1 -1
- package/dist/system/branch.d.ts.map +1 -1
- package/dist/system/change.d.ts +7 -10
- package/dist/system/change.d.ts.map +1 -1
- package/dist/system/migration.d.ts.map +1 -1
- package/dist/system/types.d.ts +10 -28
- package/dist/system/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/entity/entity-metadata-options.interface.d.ts.map +0 -1
- package/dist/entity/entity-metadata.interface.d.ts.map +0 -1
- package/dist/entity/entity_proxy_helper.d.ts +0 -49
- package/dist/entity/entity_proxy_helper.d.ts.map +0 -1
- package/dist/entity/entity_relation_helper.d.ts.map +0 -1
- package/dist/entity/generate_many_to_many_entity.d.ts.map +0 -1
- package/dist/repository/query.utils.d.ts +0 -27
- package/dist/repository/query.utils.d.ts.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { RuleGroup } from '../repository/query.interface.js';
|
|
3
|
+
import { RxDB } from '../RxDB.js';
|
|
4
|
+
/**
|
|
5
|
+
* 根据查询条件计算实体依赖
|
|
6
|
+
*
|
|
7
|
+
* 此函数会分析查询条件中的所有字段,识别涉及的关系和实体类型:
|
|
8
|
+
* - 直接字段:无额外依赖
|
|
9
|
+
* - 外键字段(如 userId):无额外依赖
|
|
10
|
+
* - 关系字段(如 user.name):添加关联实体类型
|
|
11
|
+
* - MANY_TO_MANY 关系:额外添加中间表实体类型
|
|
12
|
+
* - keyValue 字段:无额外依赖
|
|
13
|
+
*
|
|
14
|
+
* @param rxdb RxDB 实例
|
|
15
|
+
* @param where 查询条件
|
|
16
|
+
* @param EntityType 主查询的实体类型
|
|
17
|
+
* @param relationEntityTypes 用于收集依赖实体类型的集合
|
|
18
|
+
*/
|
|
19
|
+
declare const _default: <T extends EntityType>(rxdb: RxDB, where: RuleGroup<T>, EntityType: EntityType, relationEntityTypes: Set<EntityType>) => void;
|
|
20
|
+
export default _default;
|
|
21
|
+
//# sourceMappingURL=entity_type_dependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity_type_dependencies.d.ts","sourceRoot":"","sources":["../../src/query/entity_type_dependencies.ts"],"names":[],"mappings":"AACA,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;;;;;;;;;;;;;;GAcG;yBACa,CAAC,SAAS,UAAU,EAClC,MAAM,IAAI,EACV,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,YAAY,UAAU,EACtB,qBAAqB,GAAG,CAAC,UAAU,CAAC;AAJtC,wBAyBE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
|
|
4
|
+
/**
|
|
5
|
+
* 处理 CREATE 事件的缓存合并逻辑
|
|
6
|
+
*
|
|
7
|
+
* 所有查询类型都使用 JS 增量更新策略:
|
|
8
|
+
* - findAll: 直接添加到结果集
|
|
9
|
+
* - find: 合并后重新排序和截取
|
|
10
|
+
* - findByCursor: 在游标范围内增量添加
|
|
11
|
+
* - findOne/findOneOrFail: 比较并决定是否替换
|
|
12
|
+
* - count: 简单加法
|
|
13
|
+
*
|
|
14
|
+
* @param task 查询任务
|
|
15
|
+
* @param entities 创建的实体事件数据
|
|
16
|
+
*/
|
|
17
|
+
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityCreatedEventData<T>[]) => void;
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=merge_create.d.ts.map
|
|
@@ -0,0 +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;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAgW/D;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBA4FE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
import { RxDBEntityRemovedEventData } from '../rxdb-events.js';
|
|
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;
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=merge_remove.d.ts.map
|
|
@@ -0,0 +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;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAiO/D;;;;;;;;;;;;GAYG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBAuEE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
3
|
+
import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
|
|
4
|
+
/**
|
|
5
|
+
* 处理 UPDATE 事件的缓存合并逻辑
|
|
6
|
+
*
|
|
7
|
+
* UPDATE 场景的复杂性:
|
|
8
|
+
* 1. 实体可能从 "不匹配" 变为 "匹配" (类似 CREATE)
|
|
9
|
+
* 2. 实体可能从 "匹配" 变为 "不匹配" (类似 REMOVE)
|
|
10
|
+
* 3. 实体仍然匹配,但字段值变化可能影响排序
|
|
11
|
+
*
|
|
12
|
+
* 不同查询类型的更新策略:
|
|
13
|
+
* - findAll: JS 完整更新 (移除不匹配 + 更新字段 + 添加新匹配)
|
|
14
|
+
* - find: SQL 刷新 (受影响时需要重新应用 limit)
|
|
15
|
+
* - findByCursor: SQL 刷新 (排序变化可能影响游标范围)
|
|
16
|
+
* - findOne/findOneOrFail: 混合策略 (无排序时 JS 更新,有排序时 SQL 刷新)
|
|
17
|
+
* - count: JS 增减计数
|
|
18
|
+
*
|
|
19
|
+
* @param task 查询任务
|
|
20
|
+
* @param entities 更新的实体事件数据
|
|
21
|
+
*/
|
|
22
|
+
declare const _default: <T extends EntityType>(task: QueryTask<T>, entities: RxDBEntityUpdatedEventData<T>[]) => void;
|
|
23
|
+
export default _default;
|
|
24
|
+
//# sourceMappingURL=merge_update.d.ts.map
|
|
@@ -0,0 +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;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAytB/D;;;;;;;;;;;;;;;;;GAiBG;yBACa,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,0BAA0B,CAAC,CAAC,CAAC,EAAE;AAAnG,wBA6HE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
+
import { RxDBEntityCreatedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_create: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityCreatedEventData<T>[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => {
|
|
6
|
+
current_entities: RxDBEntityCreatedEventData<T>[];
|
|
7
|
+
relation_entities: RxDBEntityCreatedEventData<T>[];
|
|
8
|
+
refresh: boolean;
|
|
9
|
+
recalculate: boolean;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=need_refresh_create.d.ts.map
|
|
@@ -0,0 +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;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAuC/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,EACxC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAgGrC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
+
import { RxDBEntityRemovedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_remove: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityRemovedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult;
|
|
6
|
+
//# sourceMappingURL=need_refresh_remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"need_refresh_remove.d.ts","sourceRoot":"","sources":["../../src/query/need_refresh_remove.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,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAK/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,EAAE,EACrC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB,0DAwBrC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
3
|
+
import { QueryTask } from '../repository/QueryTask.js';
|
|
4
|
+
import { RxDBEntityUpdatedEventData } from '../rxdb-events.js';
|
|
5
|
+
export declare const query_need_refresh_update: <T extends EntityType = any>(task: QueryTask<T>, changes: RxDBEntityUpdatedEventData[], refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => import('./query-matching.utils.js').NeedRefreshResult | {
|
|
6
|
+
current_entities: RxDBEntityUpdatedEventData<EntityType>[];
|
|
7
|
+
relation_entities: RxDBEntityUpdatedEventData<EntityType>[];
|
|
8
|
+
refresh: boolean;
|
|
9
|
+
recalculate: boolean;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=need_refresh_update.d.ts.map
|
|
@@ -0,0 +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,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AA2C/D,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,UAAU,GAAG,GAAG,EAClE,MAAM,SAAS,CAAC,CAAC,CAAC,EAClB,SAAS,0BAA0B,EAAE,EACrC,eAAe,iBAAiB,EAChC,mBAAmB,iBAAiB;;;;;CAiFrC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { OrderBy } from '../repository/query-options.interface.js';
|
|
3
|
+
import { RuleGroup } from '../repository/query.interface.js';
|
|
4
|
+
import { RefreshMatchRules } from '../repository/QueryManager.interface.js';
|
|
5
|
+
/**
|
|
6
|
+
* 计算结果
|
|
7
|
+
*/
|
|
8
|
+
export interface NeedRefreshResult {
|
|
9
|
+
/**
|
|
10
|
+
* 是否需要 sql 刷新
|
|
11
|
+
*/
|
|
12
|
+
refresh: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 是否可以 JS 重新计算
|
|
15
|
+
*/
|
|
16
|
+
recalculate: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 判断是否是 RuleGroup
|
|
20
|
+
*/
|
|
21
|
+
export declare const isRuleGroup: (value: unknown) => value is RuleGroup<any>;
|
|
22
|
+
/**
|
|
23
|
+
* 判断实体是否匹配规则组
|
|
24
|
+
*/
|
|
25
|
+
export declare const isEntityMatchWhere: <T extends EntityType>(entity: any, ruleGroup: RuleGroup<T>) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 判断 entity 是否影响排序后的结果中
|
|
28
|
+
* @param entities 排序后的结果
|
|
29
|
+
* @param entity 需要判断的实体
|
|
30
|
+
* @param orderByArray 排序数组
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export declare const isEntityEffectOrderBy: <T extends EntityType>(entity: InstanceType<T> | any, result: InstanceType<T>[], orderByArray: OrderBy<string>[]) => boolean | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* 计算排序
|
|
36
|
+
* @param result
|
|
37
|
+
* @param orderByArray
|
|
38
|
+
* @returns
|
|
39
|
+
*/
|
|
40
|
+
export declare const calculateOrderBy: <T extends EntityType>(result: InstanceType<T>[], orderBy: OrderBy<string>[]) => InstanceType<T>[];
|
|
41
|
+
export declare const runMatches: (matches: {
|
|
42
|
+
[key: string]: () => boolean;
|
|
43
|
+
}, refresh_rules: RefreshMatchRules, recalculate_rules: RefreshMatchRules) => NeedRefreshResult;
|
|
44
|
+
//# sourceMappingURL=query-matching.utils.d.ts.map
|
|
@@ -0,0 +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,EAAQ,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;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAAS,CAAC,GAAG,CAChB,CAAC;AAmEpD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,GAAG,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,YACtC,CAAC;AAmCxD;;;;;;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,47 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { EntityType } from '../entity/entity.interface.js';
|
|
3
|
+
import { RxDB } from '../RxDB.js';
|
|
4
|
+
import { QueryOptions } from './QueryManager.interface.js';
|
|
5
|
+
import { QueryTask } from './QueryTask.js';
|
|
6
|
+
import { Repository } from './Repository.js';
|
|
7
|
+
/**
|
|
8
|
+
* 查询缓存管理器
|
|
9
|
+
*
|
|
10
|
+
* 用于管理查询任务的缓存和执行
|
|
11
|
+
* - 需要根据查询条件记录观察表的依赖关系
|
|
12
|
+
* - 统一计算何时 js 计算,何时重新执行 sql,减少适配器的开发难度
|
|
13
|
+
* - 未来配置 Repository 里的规则,与远程进行 pull/push
|
|
14
|
+
*
|
|
15
|
+
* 核心功能:
|
|
16
|
+
* 1. 查询结果缓存:相同查询条件复用缓存结果
|
|
17
|
+
* 2. 订阅管理:管理多个观察者的订阅和取消订阅
|
|
18
|
+
* 3. 自动清理:当没有观察者时自动清理缓存
|
|
19
|
+
* 4. 响应式刷新:支持手动刷新和自动刷新查询结果
|
|
20
|
+
*/
|
|
21
|
+
export declare class QueryManager<T extends EntityType> {
|
|
22
|
+
#private;
|
|
23
|
+
protected readonly rxdb: RxDB;
|
|
24
|
+
protected readonly EntityType: T;
|
|
25
|
+
protected readonly repository: Repository<T>;
|
|
26
|
+
/**
|
|
27
|
+
* 构造函数
|
|
28
|
+
*
|
|
29
|
+
* @param rxdb RxDB 实例,用于访问数据库和事件系统
|
|
30
|
+
* @param EntityType 实体类型,用于标识当前管理的实体
|
|
31
|
+
* @param repository 仓库实例,用于执行实际的查询操作
|
|
32
|
+
*/
|
|
33
|
+
constructor(rxdb: RxDB, EntityType: T, repository: Repository<T>);
|
|
34
|
+
/**
|
|
35
|
+
* 创建查询任务
|
|
36
|
+
*
|
|
37
|
+
* 此方法根据查询选项创建或复用缓存的查询任务
|
|
38
|
+
* - 使用查询类型和选项的 hash 值作为缓存 key
|
|
39
|
+
* - 如果缓存中已存在相同的查询,直接返回缓存的任务
|
|
40
|
+
* - 每个查询任务管理多个观察者,当最后一个观察者取消订阅时自动清理任务
|
|
41
|
+
*
|
|
42
|
+
* @param taskOptions 查询任务选项
|
|
43
|
+
* @returns 查询任务对象,包含 result$ 用于订阅查询结果
|
|
44
|
+
*/
|
|
45
|
+
createTask<RT = any>(queryOptions: QueryOptions<T>, runner: (options?: QueryOptions<T>) => Observable<RT>): QueryTask<T>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=QueryManager.d.ts.map
|
|
@@ -0,0 +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;AAgBhE,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;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU;;IAc1C,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,EACxB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,GACpD,SAAS,CAAC,CAAC,CAAC;CA4JhB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
|
|
2
|
+
import { CountOptions, FindAllOptions, FindByCursorOptions, FindOneOptions, FindOneOrFailOptions, FindOptions } from './query-options.interface.js';
|
|
3
|
+
import { FindTreeOptions } from './tree-repository.interface.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get 查询任务
|
|
6
|
+
* 根据 ID 获取单个实体的查询任务
|
|
7
|
+
*/
|
|
8
|
+
export interface GetQuery<T extends EntityType> {
|
|
9
|
+
type: 'get';
|
|
10
|
+
options: EntityStaticType<T, 'idType'>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* FindOne 查询任务
|
|
14
|
+
* 查找符合条件的第一个实体,可能返回 null
|
|
15
|
+
*/
|
|
16
|
+
export interface FindOneQuery<T extends EntityType> {
|
|
17
|
+
type: 'findOne';
|
|
18
|
+
options: FindOneOptions<T>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* FindOneOrFail 查询任务
|
|
22
|
+
* 查找符合条件的第一个实体,找不到时抛出错误
|
|
23
|
+
*/
|
|
24
|
+
export interface FindOneOrFailQuery<T extends EntityType> {
|
|
25
|
+
type: 'findOneOrFail';
|
|
26
|
+
options: FindOneOrFailOptions<T>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find 查询任务
|
|
30
|
+
* 查找符合条件的所有实体
|
|
31
|
+
*/
|
|
32
|
+
export interface FindQuery<T extends EntityType> {
|
|
33
|
+
type: 'find';
|
|
34
|
+
options: FindOptions<T>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* FindAll 查询任务
|
|
38
|
+
* 查找所有实体
|
|
39
|
+
*/
|
|
40
|
+
export interface FindAllQuery<T extends EntityType> {
|
|
41
|
+
type: 'findAll';
|
|
42
|
+
options: FindAllOptions<T>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* FindByCursor 查询任务
|
|
46
|
+
* 使用游标分页查找实体
|
|
47
|
+
*/
|
|
48
|
+
export interface FindByCursorQuery<T extends EntityType> {
|
|
49
|
+
type: 'findByCursor';
|
|
50
|
+
options: FindByCursorOptions<T>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Count 查询任务
|
|
54
|
+
* 统计符合条件的实体数量
|
|
55
|
+
*/
|
|
56
|
+
export interface CountQuery<T extends EntityType> {
|
|
57
|
+
type: 'count';
|
|
58
|
+
options: CountOptions<T>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* FindDescendants 查询任务
|
|
62
|
+
* 查找指定实体的所有后代节点
|
|
63
|
+
*/
|
|
64
|
+
export interface FindDescendantsQuery<T extends EntityType> {
|
|
65
|
+
type: 'findDescendants';
|
|
66
|
+
options: FindTreeOptions<T>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* FindAncestors 查询任务
|
|
70
|
+
* 查找指定实体的所有祖先节点
|
|
71
|
+
*/
|
|
72
|
+
export interface FindAncestorsQuery<T extends EntityType> {
|
|
73
|
+
type: 'findAncestors';
|
|
74
|
+
options: FindTreeOptions<T>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* CountDescendants 查询任务
|
|
78
|
+
* 统计指定实体的后代节点数量
|
|
79
|
+
*/
|
|
80
|
+
export interface CountDescendantsQuery<T extends EntityType> {
|
|
81
|
+
type: 'countDescendants';
|
|
82
|
+
options: FindTreeOptions<T>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* CountAncestors 查询任务
|
|
86
|
+
* 统计指定实体的祖先节点数量
|
|
87
|
+
*/
|
|
88
|
+
export interface CountAncestorsQuery<T extends EntityType> {
|
|
89
|
+
type: 'countAncestors';
|
|
90
|
+
options: FindTreeOptions<T>;
|
|
91
|
+
}
|
|
92
|
+
export type QueryOptions<T extends EntityType> = GetQuery<T> | FindOneQuery<T> | FindOneOrFailQuery<T> | FindQuery<T> | FindAllQuery<T> | FindByCursorQuery<T> | CountQuery<T> | CountAncestorsQuery<T> | CountDescendantsQuery<T> | FindAncestorsQuery<T> | FindDescendantsQuery<T>;
|
|
93
|
+
/**
|
|
94
|
+
* 刷新匹配规则名称
|
|
95
|
+
* 定义查询缓存刷新时的匹配规则类型
|
|
96
|
+
*/
|
|
97
|
+
type RefreshMatchRuleName = 'match_where' | 'match_order_by' | 'match_relation_where' | 'not_match_relation_where' | 'result_contains' | 'not_match_where' | 'result_not_contains' | 'match_where_before' | 'not_match_where_before';
|
|
98
|
+
/**
|
|
99
|
+
* 刷新匹配规则
|
|
100
|
+
* 二维数组表示多组规则的组合,每组规则内的条件是 AND 关系,组与组之间是 OR 关系
|
|
101
|
+
* 例如:[['match_where', 'result_contains'], ['not_match_where']]
|
|
102
|
+
* 表示:(匹配查询条件 AND 结果包含) OR (不匹配查询条件)
|
|
103
|
+
*/
|
|
104
|
+
export type RefreshMatchRules = RefreshMatchRuleName[][];
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=QueryManager.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryManager.interface.d.ts","sourceRoot":"","sources":["../../src/repository/QueryManager.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Observable, Observer } from 'rxjs';
|
|
2
|
+
import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
|
|
3
|
+
import { RxDBEntityEventData } from '../rxdb-events.js';
|
|
4
|
+
import { RxDB } from '../RxDB.js';
|
|
5
|
+
import { QueryOptions } from './QueryManager.interface.js';
|
|
6
|
+
export interface QueryTaskOptions<T extends EntityType> {
|
|
7
|
+
cacheKey: string;
|
|
8
|
+
options: QueryOptions<T>;
|
|
9
|
+
runner: () => Observable<any>;
|
|
10
|
+
entityType: T;
|
|
11
|
+
rxdb: RxDB;
|
|
12
|
+
depEntityTypeMap: Map<T, number>;
|
|
13
|
+
serialize: (data: RxDBEntityEventData<T>) => InstanceType<T>;
|
|
14
|
+
onClean: (cacheKey: string) => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 查询任务实现
|
|
18
|
+
*
|
|
19
|
+
* 封装查询任务的创建和生命周期管理
|
|
20
|
+
* - 管理任务的刷新和销毁信号
|
|
21
|
+
* - 处理观察者的订阅和取消订阅
|
|
22
|
+
* - 维护实体类型依赖关系
|
|
23
|
+
* - 提供任务的首次运行和清理机制
|
|
24
|
+
*/
|
|
25
|
+
export declare class QueryTask<T extends EntityType, RT = any> {
|
|
26
|
+
#private;
|
|
27
|
+
private readonly runner;
|
|
28
|
+
private readonly onClean;
|
|
29
|
+
/**
|
|
30
|
+
* 观察者集合
|
|
31
|
+
* 存储所有订阅此查询结果的观察者
|
|
32
|
+
*/
|
|
33
|
+
readonly observers: Set<Observer<any>>;
|
|
34
|
+
readonly serialize: (data: RxDBEntityEventData<T>) => InstanceType<T>;
|
|
35
|
+
readonly cacheKey: string;
|
|
36
|
+
readonly entityType: T;
|
|
37
|
+
readonly rxdb: RxDB;
|
|
38
|
+
readonly depEntityTypeMap: Map<T, number>;
|
|
39
|
+
/**
|
|
40
|
+
* 刷新触发流
|
|
41
|
+
* 每次刷新时发送刷新次数,用于触发查询重新执行
|
|
42
|
+
*/
|
|
43
|
+
readonly refresh$: Observable<number>;
|
|
44
|
+
/**
|
|
45
|
+
* 查询销毁流
|
|
46
|
+
* 当查询任务被销毁时触发
|
|
47
|
+
*/
|
|
48
|
+
readonly destroy$: Observable<void>;
|
|
49
|
+
/**
|
|
50
|
+
* 关联实体类型集合
|
|
51
|
+
* 存储查询中涉及到的所有关联实体类型
|
|
52
|
+
*/
|
|
53
|
+
readonly relationEntityTypes: Set<T>;
|
|
54
|
+
/**
|
|
55
|
+
* 查询的实体 ID 集合
|
|
56
|
+
*/
|
|
57
|
+
readonly resultEntityIds: Set<EntityStaticType<T, "idType">>;
|
|
58
|
+
/**
|
|
59
|
+
* 查询的实体集合
|
|
60
|
+
* 存储查询结果中包含的所有实体实例
|
|
61
|
+
*/
|
|
62
|
+
readonly resultEntitySet: Set<InstanceType<T>>;
|
|
63
|
+
/**
|
|
64
|
+
* 查询类型
|
|
65
|
+
*/
|
|
66
|
+
readonly type: 'get' | 'findOne' | 'findOneOrFail' | 'find' | 'findAll' | 'findByCursor' | 'count' | 'findDescendants' | 'findAncestors' | 'countDescendants' | 'countAncestors';
|
|
67
|
+
/**
|
|
68
|
+
* 查询选项
|
|
69
|
+
*/
|
|
70
|
+
readonly options: QueryOptions<T>['options'];
|
|
71
|
+
/**
|
|
72
|
+
* 观察者数量
|
|
73
|
+
* 记录当前有多少个订阅者正在监听此查询结果
|
|
74
|
+
*/
|
|
75
|
+
observerCount: number;
|
|
76
|
+
/**
|
|
77
|
+
* 刷新次数
|
|
78
|
+
* 记录查询被刷新执行的总次数
|
|
79
|
+
*/
|
|
80
|
+
refreshCount: number;
|
|
81
|
+
/**
|
|
82
|
+
* 查询结果
|
|
83
|
+
* 缓存的最新查询结果数据
|
|
84
|
+
*/
|
|
85
|
+
result?: RT;
|
|
86
|
+
/**
|
|
87
|
+
* 查询结果流
|
|
88
|
+
* 通过 Observable 发送查询结果的响应式流
|
|
89
|
+
*/
|
|
90
|
+
result$: Observable<RT>;
|
|
91
|
+
constructor(opt: QueryTaskOptions<T>);
|
|
92
|
+
/**
|
|
93
|
+
* 清理任务资源
|
|
94
|
+
*/
|
|
95
|
+
clean: () => void;
|
|
96
|
+
/**
|
|
97
|
+
* 首次运行查询任务
|
|
98
|
+
*/
|
|
99
|
+
run: () => void;
|
|
100
|
+
/**
|
|
101
|
+
* 发送新的查询结果给所有观察者
|
|
102
|
+
*/
|
|
103
|
+
next: (result: any, autoCache?: boolean) => void;
|
|
104
|
+
/**
|
|
105
|
+
* 发送错误给所有观察者
|
|
106
|
+
*/
|
|
107
|
+
error: (err: any) => void;
|
|
108
|
+
/**
|
|
109
|
+
* 手动刷新查询
|
|
110
|
+
*/
|
|
111
|
+
refresh: () => void;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=QueryTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryTask.d.ts","sourceRoot":"","sources":["../../src/repository/QueryTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,QAAQ,EAKT,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,GAAG,GAAG;;IAkBnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD;;;OAGG;IACH,QAAQ,CAAC,SAAS,qBAA4B;IAG9C,QAAQ,CAAC,SAAS,EAAG,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAG,CAAC,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE3C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,qBAAoC;IAErD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,mBAAoC;IAErD;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,SAAgB;IAE5C;;OAEG;IACH,QAAQ,CAAC,eAAe,qCAA4C;IAEpE;;;OAGG;IACH,QAAQ,CAAC,eAAe,uBAA8B;IAEtD;;OAEG;IACH,QAAQ,CAAC,IAAI,EACT,KAAK,GACL,SAAS,GACT,eAAe,GACf,MAAM,GACN,SAAS,GACT,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,gBAAgB,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7C;;;OAGG;IACH,aAAa,SAAK;IAClB;;;OAGG;IACH,YAAY,SAAK;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC;IAEZ;;;OAGG;IACH,OAAO,EAAG,UAAU,CAAC,EAAE,CAAC,CAAC;gBAEb,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAapC;;OAEG;IACH,KAAK,QAAO,IAAI,CAgBd;IAEF;;OAEG;IACH,GAAG,QAAO,IAAI,CA6BZ;IAEF;;OAEG;IACH,IAAI,GAAI,QAAQ,GAAG,EAAE,mBAAgB,KAAG,IAAI,CAgB1C;IAEF;;OAEG;IACH,KAAK,GAAI,KAAK,GAAG,KAAG,IAAI,CAEtB;IAEF;;OAEG;IACH,OAAO,QAAO,IAAI,CAEhB;CACH"}
|
|
@@ -1,41 +1,45 @@
|
|
|
1
1
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
2
|
-
import { SyncOptions } from '../entity/entity-metadata-options.interface.js';
|
|
3
2
|
import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
|
|
3
|
+
import { SyncOptions } from '../entity/metadata-options.interface.js';
|
|
4
4
|
import { IRxDBAdapter, RxDBAdapterLocalBase, RxDBAdapterRemoteBase } from '../rxdb-adapter.js';
|
|
5
5
|
import { RxDB } from '../RxDB.js';
|
|
6
|
-
import { CountOptions, FindAllOptions, FindOneOptions, FindOneOrFailOptions, FindOptions } from './query-options.interface.js';
|
|
6
|
+
import { CountOptions, FindAllOptions, FindByCursorOptions, FindOneOptions, FindOneOrFailOptions, FindOptions } from './query-options.interface.js';
|
|
7
|
+
import { QueryManager } from './QueryManager.js';
|
|
7
8
|
import { IRepository } from './repository.interface.js';
|
|
8
9
|
/**
|
|
9
10
|
* 实体仓库
|
|
10
11
|
* 根据配置决策实体的具体操作
|
|
11
12
|
*/
|
|
12
|
-
export declare class Repository<T extends EntityType, RT extends IRepository<T> = IRepository<T>>
|
|
13
|
-
protected rxdb: RxDB;
|
|
14
|
-
protected EntityType:
|
|
13
|
+
export declare class Repository<T extends EntityType, RT extends IRepository<T> = IRepository<T>> {
|
|
14
|
+
protected readonly rxdb: RxDB;
|
|
15
|
+
protected readonly EntityType: T;
|
|
15
16
|
/**
|
|
16
17
|
* 本地适配器
|
|
17
18
|
*/
|
|
18
|
-
protected localAdapterSub: BehaviorSubject<string>;
|
|
19
|
-
protected localAdapter$: Observable<IRxDBAdapter & RxDBAdapterLocalBase>;
|
|
19
|
+
protected readonly localAdapterSub: BehaviorSubject<string>;
|
|
20
|
+
protected readonly localAdapter$: Observable<IRxDBAdapter & RxDBAdapterLocalBase>;
|
|
20
21
|
/**
|
|
21
22
|
* 本地仓库
|
|
22
23
|
*/
|
|
23
|
-
protected local$: Observable<RT>;
|
|
24
|
+
protected readonly local$: Observable<RT>;
|
|
24
25
|
/**
|
|
25
26
|
* 远程适配器
|
|
26
27
|
*/
|
|
27
|
-
protected remoteAdapterSub: BehaviorSubject<string>;
|
|
28
|
-
protected remoteAdapter$: Observable<IRxDBAdapter & RxDBAdapterRemoteBase>;
|
|
28
|
+
protected readonly remoteAdapterSub: BehaviorSubject<string>;
|
|
29
|
+
protected readonly remoteAdapter$: Observable<IRxDBAdapter & RxDBAdapterRemoteBase>;
|
|
29
30
|
/**
|
|
30
31
|
* 远程仓库
|
|
31
32
|
*/
|
|
32
|
-
protected remote$: Observable<IRepository<EntityType>>;
|
|
33
|
+
protected readonly remote$: Observable<IRepository<EntityType>>;
|
|
34
|
+
/**
|
|
35
|
+
* 查询缓存管理器
|
|
36
|
+
*/
|
|
37
|
+
protected readonly queryManager: QueryManager<T>;
|
|
33
38
|
/**
|
|
34
39
|
* 同步配置
|
|
35
|
-
* TODO: 待实现同步功能
|
|
36
40
|
*/
|
|
37
|
-
sync: SyncOptions;
|
|
38
|
-
constructor(rxdb: RxDB, EntityType:
|
|
41
|
+
readonly sync: SyncOptions;
|
|
42
|
+
constructor(rxdb: RxDB, EntityType: T);
|
|
39
43
|
/**
|
|
40
44
|
* 根据 id 获取实体
|
|
41
45
|
* @param id
|
|
@@ -47,7 +51,7 @@ export declare class Repository<T extends EntityType, RT extends IRepository<T>
|
|
|
47
51
|
* @param where
|
|
48
52
|
* @param options
|
|
49
53
|
*/
|
|
50
|
-
findOne(options: FindOneOptions<T>): Observable<InstanceType<T> |
|
|
54
|
+
findOne(options: FindOneOptions<T>): Observable<InstanceType<T> | null>;
|
|
51
55
|
/**
|
|
52
56
|
* 查找一个实体,查不到就抛出错误
|
|
53
57
|
* @param where
|
|
@@ -67,16 +71,17 @@ export declare class Repository<T extends EntityType, RT extends IRepository<T>
|
|
|
67
71
|
*/
|
|
68
72
|
findAll(options: FindAllOptions<T>): Observable<InstanceType<T>[]>;
|
|
69
73
|
/**
|
|
70
|
-
*
|
|
74
|
+
* 通过指针查询实体
|
|
71
75
|
* @param where
|
|
72
76
|
* @param options
|
|
73
77
|
*/
|
|
74
|
-
|
|
78
|
+
findByCursor(options: FindByCursorOptions<T>): Observable<InstanceType<T>[]>;
|
|
75
79
|
/**
|
|
76
|
-
*
|
|
77
|
-
* @param
|
|
80
|
+
* 查询实体数量
|
|
81
|
+
* @param where
|
|
82
|
+
* @param options
|
|
78
83
|
*/
|
|
79
|
-
|
|
84
|
+
count(options: CountOptions<T>): Observable<number>;
|
|
80
85
|
/**
|
|
81
86
|
* 创建实体
|
|
82
87
|
* @param entity
|
|
@@ -96,7 +101,7 @@ export declare class Repository<T extends EntityType, RT extends IRepository<T>
|
|
|
96
101
|
/**
|
|
97
102
|
* 设置状态 local
|
|
98
103
|
*/
|
|
99
|
-
protected
|
|
100
|
-
protected
|
|
104
|
+
protected _setLocal: (entity: InstanceType<T>) => boolean;
|
|
105
|
+
protected _setLocals: (entities: InstanceType<T>[]) => void;
|
|
101
106
|
}
|
|
102
107
|
//# sourceMappingURL=Repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/repository/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/repository/Repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
|
|
1
|
+
import { EntityStaticType, EntityType, EntityUpdateData } from '../entity/entity.interface.js';
|
|
2
2
|
import { RxDB } from '../RxDB.js';
|
|
3
3
|
/**
|
|
4
4
|
* 数据仓库
|
|
@@ -6,15 +6,13 @@ import { RxDB } from '../RxDB.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare abstract class RepositoryBase<T extends EntityType> {
|
|
8
8
|
protected readonly rxdb: RxDB;
|
|
9
|
-
|
|
10
|
-
constructor(rxdb: RxDB,
|
|
9
|
+
readonly EntityType: T;
|
|
10
|
+
constructor(rxdb: RxDB, EntityType: T);
|
|
11
11
|
/**
|
|
12
12
|
* 获取实体实例
|
|
13
13
|
* @param data 实体数据
|
|
14
14
|
*/
|
|
15
|
-
createEntityRef(data:
|
|
16
|
-
id: EntityStaticType<T, 'idType'>;
|
|
17
|
-
}): any;
|
|
15
|
+
createEntityRef(data: EntityUpdateData<T>): any;
|
|
18
16
|
/**
|
|
19
17
|
* 获取实体实例
|
|
20
18
|
* @param id 实体的 ID
|
|
@@ -28,6 +26,6 @@ export declare abstract class RepositoryBase<T extends EntityType> {
|
|
|
28
26
|
/**
|
|
29
27
|
* 更新实体
|
|
30
28
|
*/
|
|
31
|
-
updateEntity(entity: InstanceType<T>,
|
|
29
|
+
updateEntity(entity: InstanceType<T>, update: Partial<InstanceType<T>>): void;
|
|
32
30
|
}
|
|
33
31
|
//# sourceMappingURL=RepositoryBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepositoryBase.d.ts","sourceRoot":"","sources":["../../src/repository/RepositoryBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"RepositoryBase.d.ts","sourceRoot":"","sources":["../../src/repository/RepositoryBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;GAGG;AACH,8BAAsB,cAAc,CAAC,CAAC,SAAS,UAAU;IAErD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;aACb,UAAU,EAAE,CAAC;gBADV,IAAI,EAAE,IAAI,EACb,UAAU,EAAE,CAAC;IAG/B;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAIzC;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAI5E;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,OAAO;IAIxD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAKvE"}
|