@yydb/light-db 0.0.0 → 0.0.11

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 (230) hide show
  1. package/dist/api/database.d.ts +48 -0
  2. package/dist/api/database.d.ts.map +1 -0
  3. package/dist/api/database.js +120 -0
  4. package/dist/api/database.js.map +1 -0
  5. package/dist/api/index.d.ts +7 -22
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +5 -52
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/schema.d.ts +33 -0
  10. package/dist/api/schema.d.ts.map +1 -0
  11. package/dist/api/schema.js +80 -0
  12. package/dist/api/schema.js.map +1 -0
  13. package/dist/api/transaction.d.ts +26 -0
  14. package/dist/api/transaction.d.ts.map +1 -0
  15. package/dist/api/transaction.js +52 -0
  16. package/dist/api/transaction.js.map +1 -0
  17. package/dist/api/types.d.ts +55 -148
  18. package/dist/api/types.d.ts.map +1 -1
  19. package/dist/api/types.js +6 -5
  20. package/dist/api/types.js.map +1 -1
  21. package/dist/codec/binary.d.ts +196 -0
  22. package/dist/codec/binary.d.ts.map +1 -0
  23. package/dist/codec/binary.js +342 -0
  24. package/dist/codec/binary.js.map +1 -0
  25. package/dist/codec/checksum.d.ts +21 -0
  26. package/dist/codec/checksum.d.ts.map +1 -0
  27. package/dist/codec/checksum.js +46 -0
  28. package/dist/codec/checksum.js.map +1 -0
  29. package/dist/codec/index.d.ts +12 -0
  30. package/dist/codec/index.d.ts.map +1 -0
  31. package/dist/codec/index.js +10 -0
  32. package/dist/codec/index.js.map +1 -0
  33. package/dist/codec/page.d.ts +114 -0
  34. package/dist/codec/page.d.ts.map +1 -0
  35. package/dist/codec/page.js +225 -0
  36. package/dist/codec/page.js.map +1 -0
  37. package/dist/codec/record.d.ts +62 -0
  38. package/dist/codec/record.d.ts.map +1 -0
  39. package/dist/codec/record.js +82 -0
  40. package/dist/codec/record.js.map +1 -0
  41. package/dist/core/broadcast.d.ts +39 -0
  42. package/dist/core/broadcast.d.ts.map +1 -0
  43. package/dist/core/broadcast.js +54 -0
  44. package/dist/core/broadcast.js.map +1 -0
  45. package/dist/core/checkpoint.d.ts +23 -0
  46. package/dist/core/checkpoint.d.ts.map +1 -0
  47. package/dist/core/checkpoint.js +49 -0
  48. package/dist/core/checkpoint.js.map +1 -0
  49. package/dist/core/engine.d.ts +142 -0
  50. package/dist/core/engine.d.ts.map +1 -0
  51. package/dist/core/engine.js +304 -0
  52. package/dist/core/engine.js.map +1 -0
  53. package/dist/core/index.d.ts +17 -0
  54. package/dist/core/index.d.ts.map +1 -0
  55. package/dist/core/index.js +13 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/lease.d.ts +32 -0
  58. package/dist/core/lease.d.ts.map +1 -0
  59. package/dist/core/lease.js +81 -0
  60. package/dist/core/lease.js.map +1 -0
  61. package/dist/core/records.d.ts +49 -0
  62. package/dist/core/records.d.ts.map +1 -0
  63. package/dist/core/records.js +70 -0
  64. package/dist/core/records.js.map +1 -0
  65. package/dist/core/recovery.d.ts +43 -0
  66. package/dist/core/recovery.d.ts.map +1 -0
  67. package/dist/core/recovery.js +99 -0
  68. package/dist/core/recovery.js.map +1 -0
  69. package/dist/core/wal.d.ts +50 -0
  70. package/dist/core/wal.d.ts.map +1 -0
  71. package/dist/core/wal.js +114 -0
  72. package/dist/core/wal.js.map +1 -0
  73. package/dist/errors/index.d.ts +44 -66
  74. package/dist/errors/index.d.ts.map +1 -1
  75. package/dist/errors/index.js +43 -128
  76. package/dist/errors/index.js.map +1 -1
  77. package/dist/index.d.ts +14 -215
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +14 -724
  80. package/dist/index.js.map +1 -1
  81. package/dist/storage/StorageAdapter.d.ts +97 -0
  82. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  83. package/dist/storage/StorageAdapter.js +9 -0
  84. package/dist/storage/StorageAdapter.js.map +1 -0
  85. package/dist/storage/index.d.ts +9 -8
  86. package/dist/storage/index.d.ts.map +1 -1
  87. package/dist/storage/index.js +8 -151
  88. package/dist/storage/index.js.map +1 -1
  89. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
  90. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
  91. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
  92. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
  93. package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
  94. package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
  95. package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
  96. package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
  97. package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
  98. package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
  99. package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
  100. package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
  101. package/package.json +48 -36
  102. package/readme.md +80 -94
  103. package/dist/api/LightDB.d.ts +0 -194
  104. package/dist/api/LightDB.d.ts.map +0 -1
  105. package/dist/api/LightDB.js +0 -299
  106. package/dist/api/LightDB.js.map +0 -1
  107. package/dist/api/Transaction.d.ts +0 -100
  108. package/dist/api/Transaction.d.ts.map +0 -1
  109. package/dist/api/Transaction.js +0 -263
  110. package/dist/api/Transaction.js.map +0 -1
  111. package/dist/collection/Collection.d.ts +0 -235
  112. package/dist/collection/Collection.d.ts.map +0 -1
  113. package/dist/collection/Collection.js +0 -671
  114. package/dist/collection/Collection.js.map +0 -1
  115. package/dist/collection/QueryBuilder.d.ts +0 -225
  116. package/dist/collection/QueryBuilder.d.ts.map +0 -1
  117. package/dist/collection/QueryBuilder.js +0 -475
  118. package/dist/collection/QueryBuilder.js.map +0 -1
  119. package/dist/collection/QueryParser.d.ts +0 -117
  120. package/dist/collection/QueryParser.d.ts.map +0 -1
  121. package/dist/collection/QueryParser.js +0 -438
  122. package/dist/collection/QueryParser.js.map +0 -1
  123. package/dist/collection/index.d.ts +0 -42
  124. package/dist/collection/index.d.ts.map +0 -1
  125. package/dist/collection/index.js +0 -41
  126. package/dist/collection/index.js.map +0 -1
  127. package/dist/collection/types.d.ts +0 -365
  128. package/dist/collection/types.d.ts.map +0 -1
  129. package/dist/collection/types.js +0 -7
  130. package/dist/collection/types.js.map +0 -1
  131. package/dist/constants/index.d.ts +0 -51
  132. package/dist/constants/index.d.ts.map +0 -1
  133. package/dist/constants/index.js +0 -68
  134. package/dist/constants/index.js.map +0 -1
  135. package/dist/indexes/BPlusTree.d.ts +0 -181
  136. package/dist/indexes/BPlusTree.d.ts.map +0 -1
  137. package/dist/indexes/BPlusTree.js +0 -528
  138. package/dist/indexes/BPlusTree.js.map +0 -1
  139. package/dist/indexes/IndexManager.d.ts +0 -236
  140. package/dist/indexes/IndexManager.d.ts.map +0 -1
  141. package/dist/indexes/IndexManager.js +0 -502
  142. package/dist/indexes/IndexManager.js.map +0 -1
  143. package/dist/indexes/PrimaryIndex.d.ts +0 -240
  144. package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
  145. package/dist/indexes/PrimaryIndex.js +0 -354
  146. package/dist/indexes/PrimaryIndex.js.map +0 -1
  147. package/dist/indexes/SecondaryIndex.d.ts +0 -204
  148. package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
  149. package/dist/indexes/SecondaryIndex.js +0 -480
  150. package/dist/indexes/SecondaryIndex.js.map +0 -1
  151. package/dist/indexes/errors.d.ts +0 -66
  152. package/dist/indexes/errors.d.ts.map +0 -1
  153. package/dist/indexes/errors.js +0 -117
  154. package/dist/indexes/errors.js.map +0 -1
  155. package/dist/indexes/index.d.ts +0 -52
  156. package/dist/indexes/index.d.ts.map +0 -1
  157. package/dist/indexes/index.js +0 -131
  158. package/dist/indexes/index.js.map +0 -1
  159. package/dist/indexes/types.d.ts +0 -246
  160. package/dist/indexes/types.d.ts.map +0 -1
  161. package/dist/indexes/types.js +0 -30
  162. package/dist/indexes/types.js.map +0 -1
  163. package/dist/performance/BatchWALWriter.d.ts +0 -185
  164. package/dist/performance/BatchWALWriter.d.ts.map +0 -1
  165. package/dist/performance/BatchWALWriter.js +0 -490
  166. package/dist/performance/BatchWALWriter.js.map +0 -1
  167. package/dist/performance/ColumnarStorage.d.ts +0 -138
  168. package/dist/performance/ColumnarStorage.d.ts.map +0 -1
  169. package/dist/performance/ColumnarStorage.js +0 -875
  170. package/dist/performance/ColumnarStorage.js.map +0 -1
  171. package/dist/performance/LazyQuery.d.ts +0 -307
  172. package/dist/performance/LazyQuery.d.ts.map +0 -1
  173. package/dist/performance/LazyQuery.js +0 -588
  174. package/dist/performance/LazyQuery.js.map +0 -1
  175. package/dist/performance/OptimizedBuffer.d.ts +0 -375
  176. package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
  177. package/dist/performance/OptimizedBuffer.js +0 -730
  178. package/dist/performance/OptimizedBuffer.js.map +0 -1
  179. package/dist/performance/RWLock.d.ts +0 -260
  180. package/dist/performance/RWLock.d.ts.map +0 -1
  181. package/dist/performance/RWLock.js +0 -570
  182. package/dist/performance/RWLock.js.map +0 -1
  183. package/dist/performance/index.d.ts +0 -41
  184. package/dist/performance/index.d.ts.map +0 -1
  185. package/dist/performance/index.js +0 -162
  186. package/dist/performance/index.js.map +0 -1
  187. package/dist/performance/types.d.ts +0 -247
  188. package/dist/performance/types.d.ts.map +0 -1
  189. package/dist/performance/types.js +0 -26
  190. package/dist/performance/types.js.map +0 -1
  191. package/dist/storage/Checkpoint.d.ts +0 -128
  192. package/dist/storage/Checkpoint.d.ts.map +0 -1
  193. package/dist/storage/Checkpoint.js +0 -251
  194. package/dist/storage/Checkpoint.js.map +0 -1
  195. package/dist/storage/LightFile.d.ts +0 -227
  196. package/dist/storage/LightFile.d.ts.map +0 -1
  197. package/dist/storage/LightFile.js +0 -526
  198. package/dist/storage/LightFile.js.map +0 -1
  199. package/dist/storage/Recovery.d.ts +0 -172
  200. package/dist/storage/Recovery.d.ts.map +0 -1
  201. package/dist/storage/Recovery.js +0 -399
  202. package/dist/storage/Recovery.js.map +0 -1
  203. package/dist/storage/SHMFile.d.ts +0 -243
  204. package/dist/storage/SHMFile.d.ts.map +0 -1
  205. package/dist/storage/SHMFile.js +0 -436
  206. package/dist/storage/SHMFile.js.map +0 -1
  207. package/dist/storage/StorageEngine.d.ts +0 -146
  208. package/dist/storage/StorageEngine.d.ts.map +0 -1
  209. package/dist/storage/StorageEngine.js +0 -353
  210. package/dist/storage/StorageEngine.js.map +0 -1
  211. package/dist/storage/WALFile.d.ts +0 -248
  212. package/dist/storage/WALFile.d.ts.map +0 -1
  213. package/dist/storage/WALFile.js +0 -597
  214. package/dist/storage/WALFile.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -220
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -7
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/utils/binary.d.ts +0 -271
  220. package/dist/utils/binary.d.ts.map +0 -1
  221. package/dist/utils/binary.js +0 -454
  222. package/dist/utils/binary.js.map +0 -1
  223. package/dist/utils/file.d.ts +0 -166
  224. package/dist/utils/file.d.ts.map +0 -1
  225. package/dist/utils/file.js +0 -346
  226. package/dist/utils/file.js.map +0 -1
  227. package/dist/utils/index.d.ts +0 -6
  228. package/dist/utils/index.d.ts.map +0 -1
  229. package/dist/utils/index.js +0 -39
  230. package/dist/utils/index.js.map +0 -1
@@ -1,475 +0,0 @@
1
- "use strict";
2
- /**
3
- * LightDB 查询构建器
4
- * 提供链式查询 API
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.QueryBuilder = void 0;
8
- const QueryParser_1 = require("./QueryParser");
9
- /**
10
- * 查询构建器
11
- * 提供链式查询 API
12
- */
13
- class QueryBuilder {
14
- /**
15
- * 创建查询构建器实例
16
- * @param executor 查询执行器
17
- */
18
- constructor(executor) {
19
- this.executor = executor;
20
- this.filter = {};
21
- this.sortCondition = {};
22
- this.skipValue = 0;
23
- this.limitValue = 0;
24
- this.fieldsValue = null;
25
- }
26
- /**
27
- * 设置查询条件
28
- * @param condition 查询条件
29
- */
30
- where(condition) {
31
- this.filter = { ...this.filter, ...condition };
32
- return this;
33
- }
34
- /**
35
- * 添加等于条件
36
- * @param field 字段名
37
- * @param value 值
38
- */
39
- eq(field, value) {
40
- const currentFilter = this.filter[field];
41
- if (typeof currentFilter === "object" && currentFilter !== null) {
42
- currentFilter["$eq"] = value;
43
- } else {
44
- this.filter[field] = value;
45
- }
46
- return this;
47
- }
48
- /**
49
- * 添加不等于条件
50
- * @param field 字段名
51
- * @param value 值
52
- */
53
- ne(field, value) {
54
- const fieldCondition = this.getOrCreateFieldCondition(field);
55
- fieldCondition["$ne"] = value;
56
- return this;
57
- }
58
- /**
59
- * 添加大于条件
60
- * @param field 字段名
61
- * @param value 值
62
- */
63
- gt(field, value) {
64
- const fieldCondition = this.getOrCreateFieldCondition(field);
65
- fieldCondition["$gt"] = value;
66
- return this;
67
- }
68
- /**
69
- * 添加大于等于条件
70
- * @param field 字段名
71
- * @param value 值
72
- */
73
- gte(field, value) {
74
- const fieldCondition = this.getOrCreateFieldCondition(field);
75
- fieldCondition["$gte"] = value;
76
- return this;
77
- }
78
- /**
79
- * 添加小于条件
80
- * @param field 字段名
81
- * @param value 值
82
- */
83
- lt(field, value) {
84
- const fieldCondition = this.getOrCreateFieldCondition(field);
85
- fieldCondition["$lt"] = value;
86
- return this;
87
- }
88
- /**
89
- * 添加小于等于条件
90
- * @param field 字段名
91
- * @param value 值
92
- */
93
- lte(field, value) {
94
- const fieldCondition = this.getOrCreateFieldCondition(field);
95
- fieldCondition["$lte"] = value;
96
- return this;
97
- }
98
- /**
99
- * 添加包含于数组条件
100
- * @param field 字段名
101
- * @param values 值数组
102
- */
103
- in(field, values) {
104
- const fieldCondition = this.getOrCreateFieldCondition(field);
105
- fieldCondition["$in"] = values;
106
- return this;
107
- }
108
- /**
109
- * 添加不包含于数组条件
110
- * @param field 字段名
111
- * @param values 值数组
112
- */
113
- nin(field, values) {
114
- const fieldCondition = this.getOrCreateFieldCondition(field);
115
- fieldCondition["$nin"] = values;
116
- return this;
117
- }
118
- /**
119
- * 添加存在性检查条件
120
- * @param field 字段名
121
- * @param exists 是否存在
122
- */
123
- fieldExists(field, exists = true) {
124
- const fieldCondition = this.getOrCreateFieldCondition(field);
125
- fieldCondition["$exists"] = exists;
126
- return this;
127
- }
128
- /**
129
- * 添加正则表达式匹配条件
130
- * @param field 字段名
131
- * @param pattern 正则表达式
132
- * @param options 正则表达式选项
133
- */
134
- regex(field, pattern, options) {
135
- const fieldCondition = this.getOrCreateFieldCondition(field);
136
- fieldCondition["$regex"] = pattern;
137
- if (options) {
138
- fieldCondition["$options"] = options;
139
- }
140
- return this;
141
- }
142
- /**
143
- * 添加逻辑与条件
144
- * @param conditions 条件数组
145
- */
146
- and(...conditions) {
147
- if (!this.filter.$and) {
148
- this.filter.$and = [];
149
- }
150
- this.filter.$and.push(...conditions);
151
- return this;
152
- }
153
- /**
154
- * 添加逻辑或条件
155
- * @param conditions 条件数组
156
- */
157
- or(...conditions) {
158
- if (!this.filter.$or) {
159
- this.filter.$or = [];
160
- }
161
- this.filter.$or.push(...conditions);
162
- return this;
163
- }
164
- /**
165
- * 添加逻辑非条件
166
- * @param condition 条件
167
- */
168
- not(condition) {
169
- this.filter.$not = condition;
170
- return this;
171
- }
172
- /**
173
- * 设置排序条件
174
- * @param field 字段名
175
- * @param direction 排序方向
176
- */
177
- sortBy(field, direction = 1) {
178
- this.sortCondition[field] = direction;
179
- return this;
180
- }
181
- /**
182
- * 升序排序
183
- * @param field 字段名
184
- */
185
- asc(field) {
186
- return this.sortBy(field, "asc");
187
- }
188
- /**
189
- * 降序排序
190
- * @param field 字段名
191
- */
192
- desc(field) {
193
- return this.sortBy(field, "desc");
194
- }
195
- /**
196
- * 设置跳过记录数
197
- * @param count 跳过的记录数
198
- */
199
- skip(count) {
200
- this.skipValue = Math.max(0, count);
201
- return this;
202
- }
203
- /**
204
- * 设置返回记录数限制
205
- * @param count 最大返回记录数
206
- */
207
- limit(count) {
208
- this.limitValue = Math.max(0, count);
209
- return this;
210
- }
211
- /**
212
- * 设置返回的字段
213
- * @param fields 字段列表
214
- */
215
- select(...fields) {
216
- this.fieldsValue = fields;
217
- return this;
218
- }
219
- /**
220
- * 获取或创建字段条件对象
221
- */
222
- getOrCreateFieldCondition(field) {
223
- const fieldKey = field;
224
- let condition = this.filter[fieldKey];
225
- if (!condition || typeof condition !== "object" || Array.isArray(condition)) {
226
- condition = {};
227
- this.filter[fieldKey] = condition;
228
- }
229
- return condition;
230
- }
231
- /**
232
- * 执行查询并返回所有匹配的文档
233
- */
234
- toArray() {
235
- const result = this.execute();
236
- const output = {
237
- docs: result.docs,
238
- };
239
- if (result.total !== undefined) {
240
- output.total = result.total;
241
- }
242
- if (result.usedIndex !== undefined) {
243
- output.usedIndex = result.usedIndex;
244
- }
245
- if (result.indexName !== undefined) {
246
- output.indexName = result.indexName;
247
- }
248
- return output;
249
- }
250
- /**
251
- * 执行查询并返回第一条匹配的文档
252
- */
253
- first() {
254
- this.limitValue = 1;
255
- const result = this.execute();
256
- return result.docs.length > 0 ? (result.docs[0] ?? null) : null;
257
- }
258
- /**
259
- * 执行查询并返回最后一条匹配的文档
260
- */
261
- last() {
262
- this.limitValue = 1;
263
- const result = this.execute();
264
- return result.docs.length > 0 ? (result.docs[result.docs.length - 1] ?? null) : null;
265
- }
266
- /**
267
- * 统计匹配的文档数量
268
- */
269
- count() {
270
- const result = this.execute();
271
- return result.total ?? result.docs.length;
272
- }
273
- /**
274
- * 检查是否存在匹配的文档
275
- */
276
- hasMatch() {
277
- return this.count() > 0;
278
- }
279
- /**
280
- * 执行查询
281
- */
282
- execute() {
283
- const indexFields = [this.executor.getPrimaryKeyField(), ...this.executor.getSecondaryIndexFields()];
284
- const analysis = QueryParser_1.QueryParser.analyzeQuery(this.filter, indexFields);
285
- let docs;
286
- let usedIndex;
287
- let indexName;
288
- if (analysis.canUseIndex && analysis.indexField) {
289
- const result = this.executeWithIndex(analysis);
290
- docs = result.docs;
291
- usedIndex = result.usedIndex;
292
- indexName = result.indexName;
293
- } else {
294
- docs = this.executeWithScan();
295
- }
296
- const total = docs.length;
297
- if (Object.keys(this.sortCondition).length > 0) {
298
- docs = this.applySort(docs);
299
- }
300
- if (this.skipValue > 0) {
301
- docs = docs.slice(this.skipValue);
302
- }
303
- if (this.limitValue > 0) {
304
- docs = docs.slice(0, this.limitValue);
305
- }
306
- if (this.fieldsValue && this.fieldsValue.length > 0) {
307
- docs = this.applyProjection(docs);
308
- }
309
- const output = {
310
- docs,
311
- total,
312
- };
313
- if (usedIndex !== undefined) {
314
- output.usedIndex = usedIndex;
315
- }
316
- if (indexName !== undefined) {
317
- output.indexName = indexName;
318
- }
319
- return output;
320
- }
321
- /**
322
- * 使用索引执行查询
323
- */
324
- executeWithIndex(analysis) {
325
- const primaryKeyField = this.executor.getPrimaryKeyField();
326
- if (analysis.indexField === primaryKeyField) {
327
- if (analysis.isExactMatch && analysis.indexValue !== undefined) {
328
- const doc = this.executor.findByPrimaryKey(analysis.indexValue);
329
- if (doc && QueryParser_1.QueryParser.matches(doc, this.filter)) {
330
- const output = {
331
- docs: [doc],
332
- usedIndex: true,
333
- };
334
- output.indexName = primaryKeyField;
335
- return output;
336
- }
337
- const output = {
338
- docs: [],
339
- usedIndex: true,
340
- };
341
- output.indexName = primaryKeyField;
342
- return output;
343
- }
344
- }
345
- const secondaryIndexFields = this.executor.getSecondaryIndexFields();
346
- if (secondaryIndexFields.includes(analysis.indexField)) {
347
- if (analysis.isExactMatch && analysis.indexValue !== undefined && analysis.indexField) {
348
- const docs = this.executor.findBySecondaryIndex(analysis.indexField, analysis.indexValue);
349
- const filtered = docs.filter((doc) => QueryParser_1.QueryParser.matches(doc, this.filter));
350
- const output = {
351
- docs: filtered,
352
- usedIndex: true,
353
- };
354
- output.indexName = analysis.indexField;
355
- return output;
356
- }
357
- }
358
- return { docs: this.executeWithScan(), usedIndex: false };
359
- }
360
- /**
361
- * 使用全表扫描执行查询
362
- */
363
- executeWithScan() {
364
- const allDocs = this.executor.getAll();
365
- return allDocs.filter((doc) => QueryParser_1.QueryParser.matches(doc, this.filter));
366
- }
367
- /**
368
- * 应用排序
369
- */
370
- applySort(docs) {
371
- const sortEntries = Object.entries(this.sortCondition);
372
- if (sortEntries.length === 0) {
373
- return docs;
374
- }
375
- return docs.slice().sort((a, b) => {
376
- for (const [field, direction] of sortEntries) {
377
- const aVal = a[field];
378
- const bVal = b[field];
379
- const cmp = this.compareValues(aVal, bVal);
380
- if (cmp !== 0) {
381
- const dir = direction === "desc" || direction === -1 ? -1 : 1;
382
- return cmp * dir;
383
- }
384
- }
385
- return 0;
386
- });
387
- }
388
- /**
389
- * 比较两个值
390
- */
391
- compareValues(a, b) {
392
- if (a === b) return 0;
393
- if (a === null || a === undefined) return -1;
394
- if (b === null || b === undefined) return 1;
395
- if (typeof a === "number" && typeof b === "number") {
396
- return a - b;
397
- }
398
- if (typeof a === "string" && typeof b === "string") {
399
- return a.localeCompare(b);
400
- }
401
- if (a instanceof Date && b instanceof Date) {
402
- return a.getTime() - b.getTime();
403
- }
404
- if (typeof a === "boolean" && typeof b === "boolean") {
405
- return a === b ? 0 : a ? 1 : -1;
406
- }
407
- return 0;
408
- }
409
- /**
410
- * 应用投影
411
- */
412
- applyProjection(docs) {
413
- if (!this.fieldsValue || this.fieldsValue.length === 0) {
414
- return docs;
415
- }
416
- return docs.map((doc) => {
417
- const projected = {};
418
- for (const field of this.fieldsValue) {
419
- if (field in doc) {
420
- projected[field] = doc[field];
421
- }
422
- }
423
- return projected;
424
- });
425
- }
426
- /**
427
- * 获取当前查询条件
428
- */
429
- getFilter() {
430
- return { ...this.filter };
431
- }
432
- /**
433
- * 获取当前排序条件
434
- */
435
- getSort() {
436
- return { ...this.sortCondition };
437
- }
438
- /**
439
- * 获取当前跳过值
440
- */
441
- getSkip() {
442
- return this.skipValue;
443
- }
444
- /**
445
- * 获取当前限制值
446
- */
447
- getLimit() {
448
- return this.limitValue;
449
- }
450
- /**
451
- * 重置查询构建器
452
- */
453
- reset() {
454
- this.filter = {};
455
- this.sortCondition = {};
456
- this.skipValue = 0;
457
- this.limitValue = 0;
458
- this.fieldsValue = null;
459
- return this;
460
- }
461
- /**
462
- * 克隆查询构建器
463
- */
464
- clone() {
465
- const cloned = new QueryBuilder(this.executor);
466
- cloned.filter = { ...this.filter };
467
- cloned.sortCondition = { ...this.sortCondition };
468
- cloned.skipValue = this.skipValue;
469
- cloned.limitValue = this.limitValue;
470
- cloned.fieldsValue = this.fieldsValue ? [...this.fieldsValue] : null;
471
- return cloned;
472
- }
473
- }
474
- exports.QueryBuilder = QueryBuilder;
475
- //# sourceMappingURL=QueryBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../src/collection/QueryBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- /**
2
- * LightDB 查询条件解析器
3
- * 解析查询条件并判断文档是否匹配
4
- */
5
- import type { QueryFilter, PrimaryKeyType } from "./types";
6
- /**
7
- * 查询解析结果
8
- */
9
- export interface QueryParseResult {
10
- /** 是否可以使用索引 */
11
- canUseIndex: boolean;
12
- /** 可以使用的索引字段 */
13
- indexField?: string;
14
- /** 索引查询值 */
15
- indexValue?: PrimaryKeyType | PrimaryKeyType[];
16
- /** 是否是精确匹配 */
17
- isExactMatch: boolean;
18
- }
19
- /**
20
- * 查询条件解析器
21
- * 提供查询条件的解析和匹配功能
22
- */
23
- export declare class QueryParser {
24
- /**
25
- * 检查文档是否匹配查询条件
26
- * @param doc 文档
27
- * @param filter 查询条件
28
- */
29
- static matches<T>(doc: T, filter: QueryFilter<T>): boolean;
30
- /**
31
- * 匹配逻辑操作符
32
- */
33
- private static matchesLogicalOperators;
34
- /**
35
- * 匹配单个字段
36
- */
37
- private static matchesField;
38
- /**
39
- * 检查是否是比较操作符
40
- */
41
- private static isComparisonOperators;
42
- /**
43
- * 检查是否是数组操作符
44
- */
45
- private static isArrayOperators;
46
- /**
47
- * 检查是否是存在性操作符
48
- */
49
- private static isExistenceOperators;
50
- /**
51
- * 检查是否是正则表达式操作符
52
- */
53
- private static isRegexOperators;
54
- /**
55
- * 匹配比较操作符
56
- */
57
- private static matchesComparisonOperators;
58
- /**
59
- * 匹配数组操作符
60
- */
61
- private static matchesArrayOperators;
62
- /**
63
- * 匹配存在性操作符
64
- */
65
- private static matchesExistenceOperators;
66
- /**
67
- * 匹配正则表达式操作符
68
- */
69
- private static matchesRegexOperators;
70
- /**
71
- * 获取嵌套值
72
- */
73
- private static getNestedValue;
74
- /**
75
- * 判断两个值是否相等
76
- */
77
- private static isEqual;
78
- /**
79
- * 判断是否大于
80
- */
81
- private static isGreaterThan;
82
- /**
83
- * 判断是否大于等于
84
- */
85
- private static isGreaterThanOrEqual;
86
- /**
87
- * 判断是否小于
88
- */
89
- private static isLessThan;
90
- /**
91
- * 判断是否小于等于
92
- */
93
- private static isLessThanOrEqual;
94
- /**
95
- * 分析查询条件,判断是否可以使用索引
96
- * @param filter 查询条件
97
- * @param indexFields 可用的索引字段列表
98
- */
99
- static analyzeQuery<T>(filter: QueryFilter<T>, indexFields: string[]): QueryParseResult;
100
- /**
101
- * 检查是否是精确值
102
- */
103
- private static isExactValue;
104
- /**
105
- * 检查是否是 $in 操作符
106
- */
107
- private static isInOperator;
108
- /**
109
- * 检查是否有比较操作符
110
- */
111
- private static hasComparisonOperators;
112
- /**
113
- * 提取查询条件中的字段列表
114
- */
115
- static extractFields<T>(filter: QueryFilter<T>): string[];
116
- }
117
- //# sourceMappingURL=QueryParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryParser.d.ts","sourceRoot":"","sources":["../../src/collection/QueryParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACR,WAAW,EAMX,cAAc,EACjB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,eAAe;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY;IACZ,UAAU,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAC/C,cAAc;IACd,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;;OAIG;WACW,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAyBjE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAyCtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IA0B3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IASpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAQ/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAQ/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAwCzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgBpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAcxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAmBpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAuB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAkCtB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAgB5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAgBzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC;;;;OAIG;WACW,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB;IA0D9F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAc3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;OAEG;WACW,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE;CAwBnE"}