@aiao/rxdb 0.0.5 → 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.
Files changed (187) hide show
  1. package/dist/RxDB.d.ts +118 -21
  2. package/dist/RxDB.d.ts.map +1 -1
  3. package/dist/RxDBError.d.ts.map +1 -1
  4. package/dist/entity/@Entity.d.ts +1 -1
  5. package/dist/entity/@Entity.d.ts.map +1 -1
  6. package/dist/entity/@TreeEntity.d.ts +2 -21
  7. package/dist/entity/@TreeEntity.d.ts.map +1 -1
  8. package/dist/entity/EntityBase.d.ts +59 -11
  9. package/dist/entity/EntityBase.d.ts.map +1 -1
  10. package/dist/entity/EntityManager.d.ts +18 -25
  11. package/dist/entity/EntityManager.d.ts.map +1 -1
  12. package/dist/entity/EntityStatus.d.ts +149 -107
  13. package/dist/entity/EntityStatus.d.ts.map +1 -1
  14. package/dist/entity/EntityStatus.interface.d.ts +59 -0
  15. package/dist/entity/EntityStatus.interface.d.ts.map +1 -0
  16. package/dist/entity/TreeEntityBase.d.ts +32 -5
  17. package/dist/entity/TreeEntityBase.d.ts.map +1 -1
  18. package/dist/entity/entity.interface.d.ts +23 -34
  19. package/dist/entity/entity.interface.d.ts.map +1 -1
  20. package/dist/entity/entity.utils.d.ts +23 -2
  21. package/dist/entity/entity.utils.d.ts.map +1 -1
  22. package/dist/entity/{generate_many_to_many_entity.d.ts → many_to_many_entity.d.ts} +3 -3
  23. package/dist/entity/many_to_many_entity.d.ts.map +1 -0
  24. package/dist/entity/{entity-metadata-options.interface.d.ts → metadata-options.interface.d.ts} +312 -35
  25. package/dist/entity/metadata-options.interface.d.ts.map +1 -0
  26. package/dist/entity/{transition-metadata.d.ts → metadata-transition.d.ts} +3 -3
  27. package/dist/entity/metadata-transition.d.ts.map +1 -0
  28. package/dist/entity/{entity-metadata.interface.d.ts → metadata.interface.d.ts} +8 -2
  29. package/dist/entity/metadata.interface.d.ts.map +1 -0
  30. package/dist/entity/metadata_cascade_default.d.ts +54 -0
  31. package/dist/entity/metadata_cascade_default.d.ts.map +1 -0
  32. package/dist/entity/proxy.d.ts +7 -0
  33. package/dist/entity/proxy.d.ts.map +1 -0
  34. package/dist/entity/{entity_relation_helper.d.ts → relation_helper.d.ts} +2 -2
  35. package/dist/entity/relation_helper.d.ts.map +1 -0
  36. package/dist/entity/tree-entity.interface.d.ts +5 -0
  37. package/dist/entity/tree-entity.interface.d.ts.map +1 -0
  38. package/dist/gateway/RxDBTabsGateway.d.ts +52 -0
  39. package/dist/gateway/RxDBTabsGateway.d.ts.map +1 -0
  40. package/dist/gateway/gateway.interface.d.ts +43 -0
  41. package/dist/gateway/gateway.interface.d.ts.map +1 -0
  42. package/dist/index.d.ts +19 -13
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +6579 -2876
  45. package/dist/query/entity_type_dependencies.d.ts +22 -0
  46. package/dist/query/entity_type_dependencies.d.ts.map +1 -0
  47. package/dist/query/merge-update-basic.d.ts +30 -0
  48. package/dist/query/merge-update-basic.d.ts.map +1 -0
  49. package/dist/query/merge-update-tree.d.ts +86 -0
  50. package/dist/query/merge-update-tree.d.ts.map +1 -0
  51. package/dist/query/merge-update.utils.d.ts +52 -0
  52. package/dist/query/merge-update.utils.d.ts.map +1 -0
  53. package/dist/query/merge_create.d.ts +19 -0
  54. package/dist/query/merge_create.d.ts.map +1 -0
  55. package/dist/query/merge_remove.d.ts +6 -0
  56. package/dist/query/merge_remove.d.ts.map +1 -0
  57. package/dist/query/merge_update.d.ts +24 -0
  58. package/dist/query/merge_update.d.ts.map +1 -0
  59. package/dist/query/need_refresh_create.d.ts +11 -0
  60. package/dist/query/need_refresh_create.d.ts.map +1 -0
  61. package/dist/query/need_refresh_remove.d.ts +6 -0
  62. package/dist/query/need_refresh_remove.d.ts.map +1 -0
  63. package/dist/query/need_refresh_update.d.ts +11 -0
  64. package/dist/query/need_refresh_update.d.ts.map +1 -0
  65. package/dist/query/query-matching.utils.d.ts +60 -0
  66. package/dist/query/query-matching.utils.d.ts.map +1 -0
  67. package/dist/query/query-relation.utils.d.ts +44 -0
  68. package/dist/query/query-relation.utils.d.ts.map +1 -0
  69. package/dist/query/query-rules-builder.d.ts +68 -0
  70. package/dist/query/query-rules-builder.d.ts.map +1 -0
  71. package/dist/query/query-tree.utils.d.ts +54 -0
  72. package/dist/query/query-tree.utils.d.ts.map +1 -0
  73. package/dist/repository/QueryManager.d.ts +69 -0
  74. package/dist/repository/QueryManager.d.ts.map +1 -0
  75. package/dist/repository/QueryManager.interface.d.ts +106 -0
  76. package/dist/repository/QueryManager.interface.d.ts.map +1 -0
  77. package/dist/repository/QueryTask.d.ts +150 -0
  78. package/dist/repository/QueryTask.d.ts.map +1 -0
  79. package/dist/repository/Repository.d.ts +38 -44
  80. package/dist/repository/Repository.d.ts.map +1 -1
  81. package/dist/repository/RepositoryBase.d.ts +8 -8
  82. package/dist/repository/RepositoryBase.d.ts.map +1 -1
  83. package/dist/repository/TreeRepository.d.ts +29 -4
  84. package/dist/repository/TreeRepository.d.ts.map +1 -1
  85. package/dist/repository/fingerprint.utils.d.ts +28 -0
  86. package/dist/repository/fingerprint.utils.d.ts.map +1 -0
  87. package/dist/repository/query-options.interface.d.ts +88 -16
  88. package/dist/repository/query-options.interface.d.ts.map +1 -1
  89. package/dist/repository/query.interface.d.ts +107 -37
  90. package/dist/repository/query.interface.d.ts.map +1 -1
  91. package/dist/repository/relation-query.interface.d.ts +20 -1
  92. package/dist/repository/relation-query.interface.d.ts.map +1 -1
  93. package/dist/repository/repository.interface.d.ts +4 -29
  94. package/dist/repository/repository.interface.d.ts.map +1 -1
  95. package/dist/repository/tree-repository.interface.d.ts +34 -30
  96. package/dist/repository/tree-repository.interface.d.ts.map +1 -1
  97. package/dist/rxdb-adapter.d.ts +100 -16
  98. package/dist/rxdb-adapter.d.ts.map +1 -1
  99. package/dist/rxdb-events.d.ts +335 -66
  100. package/dist/rxdb-events.d.ts.map +1 -1
  101. package/dist/rxdb-plugin.d.ts +2 -2
  102. package/dist/rxdb-plugin.d.ts.map +1 -1
  103. package/dist/rxdb-utils.d.ts +20 -9
  104. package/dist/rxdb-utils.d.ts.map +1 -1
  105. package/dist/rxdb.interface.d.ts +5 -9
  106. package/dist/rxdb.interface.d.ts.map +1 -1
  107. package/dist/rxdb.private.d.ts +7 -36
  108. package/dist/rxdb.private.d.ts.map +1 -1
  109. package/dist/schema/SchemaManager.d.ts +5 -4
  110. package/dist/schema/SchemaManager.d.ts.map +1 -1
  111. package/dist/system/branch.d.ts +124 -7
  112. package/dist/system/branch.d.ts.map +1 -1
  113. package/dist/system/change.d.ts +605 -33
  114. package/dist/system/change.d.ts.map +1 -1
  115. package/dist/system/migration.d.ts +61 -11
  116. package/dist/system/migration.d.ts.map +1 -1
  117. package/dist/system/repository-sync.d.ts +95 -0
  118. package/dist/system/repository-sync.d.ts.map +1 -0
  119. package/dist/system/system.interface.d.ts +25 -0
  120. package/dist/system/system.interface.d.ts.map +1 -0
  121. package/dist/system/types.d.ts +234 -139
  122. package/dist/system/types.d.ts.map +1 -1
  123. package/dist/system/types.local.d.ts +156 -0
  124. package/dist/system/types.local.d.ts.map +1 -0
  125. package/dist/system/types.remote.d.ts +103 -0
  126. package/dist/system/types.remote.d.ts.map +1 -0
  127. package/dist/version/HistoryManager.d.ts +238 -0
  128. package/dist/version/HistoryManager.d.ts.map +1 -0
  129. package/dist/version/LWWConflictResolver.d.ts +41 -0
  130. package/dist/version/LWWConflictResolver.d.ts.map +1 -0
  131. package/dist/version/VersionManager.d.ts +407 -0
  132. package/dist/version/VersionManager.d.ts.map +1 -0
  133. package/dist/version/VersionManager.interface.d.ts +428 -0
  134. package/dist/version/VersionManager.interface.d.ts.map +1 -0
  135. package/dist/version/VersionManager.utils.d.ts +14 -0
  136. package/dist/version/VersionManager.utils.d.ts.map +1 -0
  137. package/dist/version/bulk-sync.d.ts +97 -0
  138. package/dist/version/bulk-sync.d.ts.map +1 -0
  139. package/dist/version/check-repository-updates.d.ts +53 -0
  140. package/dist/version/check-repository-updates.d.ts.map +1 -0
  141. package/dist/version/compact-changes.d.ts +45 -0
  142. package/dist/version/compact-changes.d.ts.map +1 -0
  143. package/dist/version/conflict.d.ts +75 -0
  144. package/dist/version/conflict.d.ts.map +1 -0
  145. package/dist/version/create_branch.d.ts +13 -0
  146. package/dist/version/create_branch.d.ts.map +1 -0
  147. package/dist/version/dependency-graph.d.ts +132 -0
  148. package/dist/version/dependency-graph.d.ts.map +1 -0
  149. package/dist/version/find_switch_branch_step.d.ts +53 -0
  150. package/dist/version/find_switch_branch_step.d.ts.map +1 -0
  151. package/dist/version/get-all-repository-sync-status.d.ts +58 -0
  152. package/dist/version/get-all-repository-sync-status.d.ts.map +1 -0
  153. package/dist/version/get-repository-sync-status.d.ts +74 -0
  154. package/dist/version/get-repository-sync-status.d.ts.map +1 -0
  155. package/dist/version/pull-repository.d.ts +99 -0
  156. package/dist/version/pull-repository.d.ts.map +1 -0
  157. package/dist/version/pull.d.ts +11 -0
  158. package/dist/version/pull.d.ts.map +1 -0
  159. package/dist/version/push-repository.d.ts +93 -0
  160. package/dist/version/push-repository.d.ts.map +1 -0
  161. package/dist/version/push.d.ts +11 -0
  162. package/dist/version/push.d.ts.map +1 -0
  163. package/dist/version/remove_branch.d.ts +8 -0
  164. package/dist/version/remove_branch.d.ts.map +1 -0
  165. package/dist/version/switch_branch_actions.d.ts +17 -0
  166. package/dist/version/switch_branch_actions.d.ts.map +1 -0
  167. package/dist/version/sync-repository.d.ts +57 -0
  168. package/dist/version/sync-repository.d.ts.map +1 -0
  169. package/dist/version/sync-type-utils.d.ts +145 -0
  170. package/dist/version/sync-type-utils.d.ts.map +1 -0
  171. package/dist/version/topological-sort.d.ts +70 -0
  172. package/dist/version/topological-sort.d.ts.map +1 -0
  173. package/dist/version/version.utils.d.ts +4 -0
  174. package/dist/version/version.utils.d.ts.map +1 -0
  175. package/package.json +4 -3
  176. package/README.md +0 -1
  177. package/dist/entity/entity-metadata-options.interface.d.ts.map +0 -1
  178. package/dist/entity/entity-metadata.interface.d.ts.map +0 -1
  179. package/dist/entity/entity_proxy_helper.d.ts +0 -49
  180. package/dist/entity/entity_proxy_helper.d.ts.map +0 -1
  181. package/dist/entity/entity_relation_helper.d.ts.map +0 -1
  182. package/dist/entity/generate_many_to_many_entity.d.ts.map +0 -1
  183. package/dist/entity/transition-metadata.d.ts.map +0 -1
  184. package/dist/repository/query.utils.d.ts +0 -27
  185. package/dist/repository/query.utils.d.ts.map +0 -1
  186. package/dist/system/VersionManager.d.ts +0 -35
  187. package/dist/system/VersionManager.d.ts.map +0 -1
@@ -3,45 +3,117 @@ import { RuleGroup } from './query.interface.js';
3
3
  /**
4
4
  * 排序
5
5
  */
6
- export interface OrderBy<FieldType extends string = string> {
7
- field: FieldType;
6
+ export interface OrderBy<T extends string = string> {
7
+ /**
8
+ * 排序字段
9
+ */
10
+ field: T;
11
+ /**
12
+ * 排序方式
13
+ */
8
14
  sort: 'asc' | 'desc';
9
15
  }
10
16
  /**
11
17
  * FindOne 查询选项
12
18
  */
13
- export interface FindOneOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>, OrderByFieldType extends string = string> {
14
- where: WhereType;
15
- orderBy?: OrderBy<OrderByFieldType>[];
19
+ export interface FindOneOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>, W extends string = string> {
20
+ where: U;
21
+ orderBy?: OrderBy<W>[];
16
22
  }
17
23
  /**
18
24
  * FindOneOrFail 查询选项
19
25
  */
20
- export interface FindOneOrFailOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>, OrderByFieldType extends string = string> {
21
- where: WhereType;
22
- orderBy?: OrderBy<OrderByFieldType>[];
26
+ export interface FindOneOrFailOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>, W extends string = string> {
27
+ where: U;
28
+ orderBy?: OrderBy<W>[];
23
29
  }
24
30
  /**
25
31
  * Find 查询选项
26
32
  */
27
- export interface FindOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>, OrderByFieldType extends string = string> {
28
- where: WhereType;
29
- orderBy?: OrderBy<OrderByFieldType>[];
33
+ export interface FindOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>, W extends string = string> {
34
+ where: U;
35
+ orderBy?: OrderBy<W>[];
36
+ /**
37
+ * 获取数据量
38
+ * @default 100
39
+ */
30
40
  limit?: number;
41
+ /**
42
+ * 分页偏离量
43
+ * @default 0
44
+ */
31
45
  offset?: number;
32
46
  }
47
+ /**
48
+ * FindByCursor 查询选项
49
+ */
50
+ export interface FindByCursorOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>, W extends string = string> {
51
+ where: U;
52
+ /**
53
+ * 排序条件
54
+ * 指针查询的时候必须包含唯一值的排序例如: id 作为最后一个排序参数,不然无法定位指针
55
+ * @example
56
+ * ```ts
57
+ * orderBy: [
58
+ * { field: 'createdAt', sort: 'DESC' },
59
+ * { field: 'id', sort: 'ASC' } // 必须包含唯一值排序
60
+ * ]
61
+ * ```
62
+ */
63
+ orderBy: OrderBy<W>[];
64
+ /**
65
+ * 获取这个实体之前的实体
66
+ */
67
+ before?: InstanceType<T>;
68
+ /**
69
+ * 获取这个实体之后的实体
70
+ */
71
+ after?: InstanceType<T>;
72
+ /**
73
+ * 获取数据量
74
+ * 注意:limit 首次返回会 <=100, 但是第二次,增量场景下并不一定保持 100 他会根据实际情况变化
75
+ * 例如:页面滚动触发有两个 FindByCursor 查询组成了一组数据,这时候有个数据被创建且数据满足第一个查询条件
76
+ * 那么更新后的数据量就会比 limit 多 1, 第二个 FindByCursor 开头的指针是不会变的,所以没有影响第二个结果集
77
+ * @default 100
78
+ */
79
+ limit?: number;
80
+ }
33
81
  /**
34
82
  * FindAll 查询选项
35
83
  */
36
- export interface FindAllOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>, OrderByFieldType extends string = string> {
37
- where: WhereType;
38
- orderBy?: OrderBy<OrderByFieldType>[];
84
+ export interface FindAllOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>, W extends string = string> {
85
+ /**
86
+ * 查询条件
87
+ * 用于过滤查询结果
88
+ * 支持组合查询
89
+ * @example
90
+ * ```ts
91
+ * where: {
92
+ * combinator: 'and',
93
+ * rules: [
94
+ * { field: 'status', operator: '=', value: 'active' },
95
+ * { field: 'createdAt', operator: '>=', value: '2023-01-01' }
96
+ * ]
97
+ * }
98
+ * ```
99
+ */
100
+ where: U;
101
+ /**
102
+ * 排序条件
103
+ * @example
104
+ * ```ts
105
+ * orderBy: [
106
+ * { field: 'createdAt', sort: 'desc' },
107
+ * { field: 'id', sort: 'asc' } // 必须包含唯一值排序
108
+ * ]
109
+ */
110
+ orderBy?: OrderBy<W>[];
39
111
  }
40
112
  /**
41
113
  * Count 查询选项
42
114
  */
43
- export interface CountOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>> {
44
- where: WhereType;
115
+ export interface CountOptions<T extends EntityType = any, U = RuleGroup<InstanceType<T>>> {
116
+ where: U;
45
117
  groupBy?: string[];
46
118
  }
47
119
  //# sourceMappingURL=query-options.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-options.interface.d.ts","sourceRoot":"","sources":["../../src/repository/query-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACxD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,gBAAgB,SAAS,MAAM,GAAG,MAAM;IAExC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,gBAAgB,SAAS,MAAM,GAAG,MAAM;IAExC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,gBAAgB,SAAS,MAAM,GAAG,MAAM;IAExC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACtC,gBAAgB,SAAS,MAAM,GAAG,MAAM;IAExC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9F,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB"}
1
+ {"version":3,"file":"query-options.interface.d.ts","sourceRoot":"","sources":["../../src/repository/query-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAChD;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC;IAET;;OAEG;IACH,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACnH,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,MAAM,GAAG,MAAM;IAEzB,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IAChH,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,MAAM,GAAG,MAAM;IAEzB,KAAK,EAAE,CAAC,CAAC;IAET;;;;;;;;;;OAUG;IACH,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAExB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACnH;;;;;;;;;;;;;;OAcG;IACH,KAAK,EAAE,CAAC,CAAC;IAET;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB"}
@@ -1,84 +1,117 @@
1
- import { SetNonNullable } from 'type-fest';
2
1
  import { RxDBContext } from '../rxdb.interface.js';
2
+ /**
3
+ * 字符串类型的键
4
+ */
5
+ type StringKey<T> = keyof T & string;
3
6
  /**
4
7
  * 判断相等
5
8
  */
6
- interface RuleEqualNullable<T, K extends keyof T = keyof T, VT = T[K]> {
9
+ interface RuleEqualNullable<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
7
10
  field: K;
8
11
  operator: '=' | '!=';
9
- value: VT;
12
+ value: Exclude<VT, undefined>;
10
13
  }
11
14
  /**
12
15
  * 字符串比较
13
16
  */
14
- interface RuleStringNonNullable<T, K extends keyof T = keyof T, VT = T[K]> {
17
+ interface RuleStringNonNullable<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
15
18
  field: K;
16
- operator: '<' | '>' | '<=' | '>=' | 'contains' | 'notContain' | 'beginWith' | 'notBeginWith' | 'endWith' | 'notEndWith';
17
- value: SetNonNullable<VT>;
19
+ operator: '<' | '>' | '<=' | '>=' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith';
20
+ value: Exclude<VT, undefined | null>;
18
21
  }
19
22
  /**
20
23
  * 数值比较
21
24
  */
22
- interface RuleNumberNonNullable<T, K extends keyof T = keyof T, VT = T[K]> {
25
+ interface RuleNumberNonNullable<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
23
26
  field: K;
24
27
  operator: '<' | '>' | '<=' | '>=';
25
- value: SetNonNullable<VT>;
28
+ value: Exclude<VT, undefined | null>;
26
29
  }
27
30
  /**
28
31
  * in
29
32
  */
30
- interface RuleIn<T, K extends keyof T = keyof T, VT = T[K]> {
33
+ interface RuleIn<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
31
34
  field: K;
32
35
  operator: 'in' | 'notIn';
33
- value: SetNonNullable<VT>[];
36
+ value: Exclude<VT, undefined | null>[];
34
37
  }
35
38
  /**
36
39
  * between
37
40
  */
38
- interface RuleBetween<T, K extends keyof T = keyof T, VT = T[K]> {
41
+ interface RuleBetween<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
39
42
  field: K;
40
43
  operator: 'between' | 'notBetween';
41
- value: [SetNonNullable<VT>, SetNonNullable<VT>];
44
+ value: [Exclude<VT, undefined | null>, Exclude<VT, undefined | null>];
42
45
  }
43
46
  /**
44
- * UUID
45
- */
46
- export type UUIDRules<T, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K> | RuleIn<T, K, VT>;
47
- /**
48
- * string
49
- */
50
- export type StringRules<T, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleStringNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
51
- /**
52
- * number
53
- */
54
- export type NumberRules<T, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
55
- /**
56
- * Boolean
47
+ * 数值比较
57
48
  */
58
- export type BooleanRules<T, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K, VT>;
49
+ interface RuleJSONSimple<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> {
50
+ field: K;
51
+ operator: 'contains' | 'notContains';
52
+ value: Exclude<VT, undefined | null>;
53
+ }
59
54
  /**
60
- * Date
55
+ * EXISTS / NOT EXISTS
56
+ * 用于查询关系字段是否存在满足条件的关联实体
57
+ *
58
+ * @example
59
+ * // 基础用法 - 查询有子菜单的菜单
60
+ * { field: 'children', operator: 'exists' }
61
+ *
62
+ * @example
63
+ * // 带条件 - 查询有激活状态子菜单的菜单
64
+ * {
65
+ * field: 'children',
66
+ * operator: 'exists',
67
+ * where: {
68
+ * combinator: 'and',
69
+ * rules: [{ field: 'active', operator: '=', value: true }]
70
+ * }
71
+ * }
61
72
  */
62
- export type DateRules<T, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
73
+ interface RuleExists<T, K extends StringKey<T> = StringKey<T>> {
74
+ /**
75
+ * 关系字段名
76
+ * 必须是实体上定义的关系字段(通过 @Relation 装饰器)
77
+ */
78
+ field: K;
79
+ /**
80
+ * EXISTS 操作符
81
+ */
82
+ operator: 'exists' | 'notExists';
83
+ /**
84
+ * 子查询条件(可选)
85
+ * 用于过滤关联实体
86
+ *
87
+ * 类型自动推断:
88
+ * - 1:N 关系: T[K] extends Array<infer U> ? U : never
89
+ * - N:1 关系: T[K]
90
+ * - 1:1 关系: T[K]
91
+ * - N:M 关系: T[K] extends Array<infer U> ? U : never
92
+ */
93
+ where?: RuleGroup<T[K] extends Array<infer U> ? U : T[K]>;
94
+ }
63
95
  /**
64
96
  * 查询规则
65
97
  */
66
- export type Rule<T = any, K extends keyof T = keyof T, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleStringNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
98
+ export type Rule<T = any, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleStringNonNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT> | RuleJSONSimple<T, K, VT> | RuleExists<T, K>;
67
99
  /**
68
- * 查询规则组
100
+ * 查询规则组(基础)
101
+ * 用于生成的类型文件,可以组合出更多复杂的类型
69
102
  */
70
- export interface RuleGroup<T = any, K extends keyof T = keyof T, RT = Rule<T, K, T[K]>> {
71
- combinator: 'and' | 'or';
72
- rules: Array<RuleGroup<T, K, RT> | RT>;
73
- }
74
- export interface RuleGroupCustom<T, K, RT> {
103
+ export interface RuleGroupBase<T, K, RT> {
75
104
  combinator: 'and' | 'or';
76
- rules: Array<RuleGroupCustom<T, K, RT> | RT>;
105
+ rules: Array<RuleGroupBase<T, K, RT> | RT>;
77
106
  }
107
+ /**
108
+ * 查询规则组(自动计算类型)
109
+ */
110
+ export type RuleGroup<T = any, K extends StringKey<T> = StringKey<T>, RT = Rule<T, K, T[K]>> = RuleGroupBase<T, K, RT>;
78
111
  /**
79
112
  * 所有操作符
80
113
  */
81
- export type OperatorName = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'contains' | 'notContain' | 'beginWith' | 'notBeginWith' | 'endWith' | 'notEndWith' | 'null' | 'notNull' | 'in' | 'notIn' | 'between' | 'notBetween';
114
+ export type OperatorName = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith' | 'null' | 'notNull' | 'in' | 'notIn' | 'between' | 'notBetween' | 'exists' | 'notExists';
82
115
  /**
83
116
  * 查询上下文
84
117
  */
@@ -95,6 +128,43 @@ export interface IMutationContext extends RxDBContext {
95
128
  * 自定义更新时间
96
129
  */
97
130
  updatedAt?: Date;
131
+ createdAt?: Date;
98
132
  }
133
+ /**
134
+ * UUID
135
+ */
136
+ export type UUIDRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleIn<T, K, VT>;
137
+ /**
138
+ * string
139
+ */
140
+ export type StringRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleStringNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
141
+ /**
142
+ * number
143
+ */
144
+ export type NumberRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
145
+ /**
146
+ * integer
147
+ */
148
+ export type IntegerRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
149
+ /**
150
+ * Boolean
151
+ */
152
+ export type BooleanRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT>;
153
+ /**
154
+ * Date
155
+ */
156
+ export type DateRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleEqualNullable<T, K, VT> | RuleNumberNonNullable<T, K, VT> | RuleIn<T, K, VT> | RuleBetween<T, K, VT>;
157
+ /**
158
+ * stringArray
159
+ */
160
+ export type StringArrayRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleIn<T, K, VT>;
161
+ /**
162
+ * numberArray
163
+ */
164
+ export type NumberArrayRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleIn<T, K, VT>;
165
+ /**
166
+ * keyValue
167
+ */
168
+ export type KeyValueRules<T, K extends StringKey<T> = StringKey<T>, VT = T[K]> = RuleJSONSimple<T, K, VT>;
99
169
  export {};
100
170
  //# sourceMappingURL=query.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.interface.d.ts","sourceRoot":"","sources":["../../src/repository/query.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.interface.d.ts","sourceRoot":"","sources":["../../src/repository/query.interface.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ interface RuleEqualNullable<K, VT> {
12
12
  */
13
13
  interface RuleStringNonNullable<K, VT> {
14
14
  field: K;
15
- operator: '<' | '>' | '<=' | '>=' | 'contains' | 'notContain' | 'beginWith' | 'notBeginWith' | 'endWith' | 'notEndWith';
15
+ operator: '<' | '>' | '<=' | '>=' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith';
16
16
  value: SetNonNullable<VT>;
17
17
  }
18
18
  /**
@@ -59,5 +59,24 @@ export type RelationBooleanRules<K, VT> = RuleEqualNullable<K, VT>;
59
59
  * Date
60
60
  */
61
61
  export type RelationDateRules<K, VT> = RuleEqualNullable<K, VT> | RuleNumberNonNullable<K, VT> | RuleIn<K, VT> | RuleBetween<K, VT>;
62
+ /**
63
+ * EXISTS / NOT EXISTS
64
+ * 用于查询关系字段是否存在满足条件的关联实体
65
+ * @example
66
+ * // 查询有子菜单的菜单
67
+ * { field: 'children', operator: 'exists' }
68
+ * // 查询有激活状态子菜单的菜单
69
+ * { field: 'children', operator: 'exists', where: { rules: [{ field: 'active', operator: '=', value: true }] } }
70
+ */
71
+ interface RuleExists<K extends string, SubRG> {
72
+ field: K;
73
+ operator: 'exists' | 'notExists';
74
+ where?: SubRG;
75
+ }
76
+ /**
77
+ * Relation EXISTS Rules
78
+ * SubRG 类型参数应为关联实体的 RuleGroup 类型
79
+ */
80
+ export type RelationExistsRules<K extends string, SubRG> = RuleExists<K, SubRG>;
62
81
  export {};
63
82
  //# sourceMappingURL=relation-query.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation-query.interface.d.ts","sourceRoot":"","sources":["../../src/repository/relation-query.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,UAAU,iBAAiB,CAAC,CAAC,EAAE,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,EAAE,CAAC;CACX;AAED;;GAEG;AACH,UAAU,qBAAqB,CAAC,CAAC,EAAE,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EACJ,GAAG,GACH,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,UAAU,GACV,YAAY,GACZ,WAAW,GACX,cAAc,GACd,SAAS,GACT,YAAY,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,qBAAqB,CAAC,CAAC,EAAE,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,MAAM,CAAC,CAAC,EAAE,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,UAAU,WAAW,CAAC,CAAC,EAAE,EAAE;IACzB,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,SAAS,GAAG,YAAY,CAAC;IACnC,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,EAAE,IAAI,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,EAAE,IACjC,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GACxB,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,GAC5B,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GACb,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,EAAE,IACjC,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GACxB,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,GAC5B,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GACb,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,EAAE,IAAI,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,EAAE,IAC/B,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,GACxB,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,GAC5B,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GACb,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"relation-query.interface.d.ts","sourceRoot":"","sources":["../../src/repository/relation-query.interface.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,18 @@
1
- import { Observable } from 'rxjs';
2
1
  import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
3
- import { CountOptions, FindAllOptions, FindOneOptions, FindOneOrFailOptions, FindOptions } from './query-options.interface.js';
4
2
  /**
5
3
  * 数据仓库管理接口
6
4
  */
7
5
  export interface IRepository<T extends EntityType> {
8
- /**
9
- * 根据 id 获取实体
10
- * @param id
11
- */
12
- get(id: EntityStaticType<T, 'idType'>): Observable<InstanceType<T>>;
13
- /**
14
- * 查找一个实体
15
- * @param options
16
- */
17
- findOne(options: FindOneOptions<T>): Observable<InstanceType<T> | undefined>;
18
- /**
19
- * 查找一个实体,查不到就抛出错误
20
- * @param options
21
- */
22
- findOneOrFail(options: FindOneOrFailOptions<T>): Observable<InstanceType<T>>;
23
6
  /**
24
7
  * 查询多个实体
25
- * @param where
26
- * @param options
27
- */
28
- find(options: FindOptions<T>): Observable<InstanceType<T>[]>;
29
- /**
30
- * 查询所有实体
31
- * @param where
32
- * @param options
8
+ * @param options 查询选项
33
9
  */
34
- findAll(options: FindAllOptions<T>): Observable<InstanceType<T>[]>;
10
+ find(options: EntityStaticType<T, 'findOptions'>): Promise<InstanceType<T>[]>;
35
11
  /**
36
12
  * 查询实体数量
37
- * @param where
38
- * @param options
13
+ * @param options 查询选项
39
14
  */
40
- count(options?: CountOptions<T>): Observable<number>;
15
+ count(options: EntityStaticType<T, 'countOptions'>): Promise<number>;
41
16
  /**
42
17
  * 创建实体
43
18
  * @param entity
@@ -1 +1 @@
1
- {"version":3,"file":"repository.interface.d.ts","sourceRoot":"","sources":["../../src/repository/repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU;IAC/C;;;OAGG;IACH,GAAG,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpE;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE7E;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7D;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnE;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAErD;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,KAAK,UAAU;CAChB"}
1
+ {"version":3,"file":"repository.interface.d.ts","sourceRoot":"","sources":["../../src/repository/repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU;IAC/C;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9E;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAErE;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,KAAK,UAAU;CAChB"}
@@ -1,4 +1,3 @@
1
- import { Observable } from 'rxjs';
2
1
  import { EntityStaticType, EntityType } from '../entity/entity.interface.js';
3
2
  import { RuleGroup } from './query.interface.js';
4
3
  import { IRepository } from './repository.interface.js';
@@ -7,30 +6,29 @@ import { IRepository } from './repository.interface.js';
7
6
  */
8
7
  export interface FindTreeOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>> {
9
8
  /**
10
- * 查询的根节点
9
+ * 查询的根实体 ID
11
10
  */
12
- entity: InstanceType<T> | EntityStaticType<T, 'idType'>;
11
+ entityId?: EntityStaticType<T, 'idType'> | null;
13
12
  /**
14
13
  * 查询条件
15
14
  */
16
15
  where?: WhereType;
17
16
  /**
18
- * 查询级别
19
- * @default 0
20
- */
21
- level?: number;
22
- }
23
- /**
24
- * 树结构查询配置
25
- */
26
- export interface FindTreeRootOptions<T extends EntityType = any, WhereType = RuleGroup<InstanceType<T>>> {
27
- /**
28
- * 查询条件
29
- */
30
- where?: WhereType;
31
- /**
32
- * 查询级别
17
+ * 查询级别(包含当前节点)
18
+ * - 0: 当前节点 1,parentId 为 null 是查询所有根节点,2,parentId=xxx 时只有当前节点
19
+ * - 1: 当前节点 + 直接子节点(1 层深度)
20
+ * - 2: 当前节点 + 子节点 + 孙子节点(2 层深度)
21
+ * - n: 查询到第 n 层深度
33
22
  * @default 0
23
+ * Maximum: 100
24
+ *
25
+ * 注意:层级数包含当前节点本身
26
+ * 例如 level=1 会返回:当前节点 + 其直接子节点
27
+ *
28
+ * @remarks
29
+ * - 当 level 未提供时,默认 0
30
+ * - 当 level < 0 时,会被规范化为 0
31
+ * - 当 level > 100 时,会被限制为 100
34
32
  */
35
33
  level?: number;
36
34
  }
@@ -38,29 +36,35 @@ export interface FindTreeRootOptions<T extends EntityType = any, WhereType = Rul
38
36
  * 树结构仓库接口
39
37
  */
40
38
  export interface ITreeRepository<T extends EntityType> extends IRepository<T> {
41
- /**
42
- * 查询根节点
43
- */
44
- findRoot(options?: FindTreeRootOptions<T>): Observable<InstanceType<T>[]>;
45
- /**
46
- * 查询根节点数量
47
- */
48
- countRoot(options?: FindTreeRootOptions<T>): Observable<number>;
49
39
  /**
50
40
  * 查询子孙实体
41
+ *
42
+ * @remarks
43
+ * - 指定 entityId 时:包含当前节点 + 子孙节点
44
+ * - 不指定 entityId 时:返回所有根节点及其子孙
51
45
  */
52
- findDescendants(options: FindTreeOptions<T>): Observable<InstanceType<T>[]>;
46
+ findDescendants(options: FindTreeOptions<T>): Promise<InstanceType<T>[]>;
53
47
  /**
54
48
  * 查询子孙实体数量
49
+ *
50
+ * @remarks
51
+ * - 指定 entityId 时:**不包含当前节点**,只统计后代数量
52
+ * - 不指定 entityId 时:统计所有根节点及其后代的总数
55
53
  */
56
- countDescendants(options: FindTreeOptions<T>): Observable<number>;
54
+ countDescendants(options: FindTreeOptions<T>): Promise<number>;
57
55
  /**
58
56
  * 查询祖先节点
57
+ *
58
+ * @remarks
59
+ * 指定 entityId 时:包含当前节点 + 祖先节点
59
60
  */
60
- findAncestors(options: FindTreeOptions<T>): Observable<InstanceType<T>[]>;
61
+ findAncestors(options: FindTreeOptions<T>): Promise<InstanceType<T>[]>;
61
62
  /**
62
63
  * 查询祖先节点数量
64
+ *
65
+ * @remarks
66
+ * 指定 entityId 时:**不包含当前节点**,只统计祖先数量
63
67
  */
64
- countAncestors(options: FindTreeOptions<T>): Observable<number>;
68
+ countAncestors(options: FindTreeOptions<T>): Promise<number>;
65
69
  }
66
70
  //# sourceMappingURL=tree-repository.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-repository.interface.d.ts","sourceRoot":"","sources":["../../src/repository/tree-repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjG;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrG;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1E;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAEhE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5E;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElE;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1E;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;CACjE"}
1
+ {"version":3,"file":"tree-repository.interface.d.ts","sourceRoot":"","sources":["../../src/repository/tree-repository.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjG;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEzE;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvE;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D"}