@objectql/driver-memory 4.0.1 → 4.0.3

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/index.js CHANGED
@@ -50,13 +50,13 @@ class MemoryDriver {
50
50
  this.name = 'MemoryDriver';
51
51
  this.version = '4.0.0';
52
52
  this.supports = {
53
- transactions: false,
53
+ transactions: true,
54
54
  joins: false,
55
55
  fullTextSearch: false,
56
56
  jsonFields: true,
57
57
  arrayFields: true,
58
58
  queryFilters: true,
59
- queryAggregations: false,
59
+ queryAggregations: true,
60
60
  querySorting: true,
61
61
  queryPagination: true,
62
62
  queryWindowFunctions: false,
@@ -65,10 +65,20 @@ class MemoryDriver {
65
65
  this.config = config;
66
66
  this.store = new Map();
67
67
  this.idCounters = new Map();
68
+ this.transactions = new Map();
69
+ this.indexes = new Map();
68
70
  // Load initial data if provided
69
71
  if (config.initialData) {
70
72
  this.loadInitialData(config.initialData);
71
73
  }
74
+ // Set up persistence if configured
75
+ if (config.persistence) {
76
+ this.setupPersistence();
77
+ }
78
+ // Build indexes if configured
79
+ if (config.indexes) {
80
+ this.buildIndexes(config.indexes);
81
+ }
72
82
  }
73
83
  /**
74
84
  * Connect to the database (for DriverInterface compatibility)
@@ -101,8 +111,6 @@ class MemoryDriver {
101
111
  * Supports filtering, sorting, pagination, and field projection using Mingo.
102
112
  */
103
113
  async find(objectName, query = {}, options) {
104
- // Normalize query to support both legacy and QueryAST formats
105
- const normalizedQuery = this.normalizeQuery(query);
106
114
  // Get all records for this object type
107
115
  const pattern = `${objectName}:`;
108
116
  let records = [];
@@ -112,26 +120,26 @@ class MemoryDriver {
112
120
  }
113
121
  }
114
122
  // Convert ObjectQL filters to MongoDB query format
115
- const mongoQuery = this.convertToMongoQuery(normalizedQuery.filters);
123
+ const mongoQuery = this.convertToMongoQuery(query.where);
116
124
  // Apply filters using Mingo
117
125
  if (mongoQuery && Object.keys(mongoQuery).length > 0) {
118
126
  const mingoQuery = new mingo_1.Query(mongoQuery);
119
127
  records = mingoQuery.find(records).all();
120
128
  }
121
129
  // Apply sorting manually (Mingo's sort has issues with CJS builds)
122
- if (normalizedQuery.sort && Array.isArray(normalizedQuery.sort) && normalizedQuery.sort.length > 0) {
123
- records = this.applyManualSort(records, normalizedQuery.sort);
130
+ if (query.orderBy && Array.isArray(query.orderBy) && query.orderBy.length > 0) {
131
+ records = this.applyManualSort(records, query.orderBy);
124
132
  }
125
133
  // Apply pagination
126
- if (normalizedQuery.skip) {
127
- records = records.slice(normalizedQuery.skip);
134
+ if (query.offset) {
135
+ records = records.slice(query.offset);
128
136
  }
129
- if (normalizedQuery.limit) {
130
- records = records.slice(0, normalizedQuery.limit);
137
+ if (query.limit) {
138
+ records = records.slice(0, query.limit);
131
139
  }
132
140
  // Apply field projection
133
- if (normalizedQuery.fields && Array.isArray(normalizedQuery.fields)) {
134
- records = records.map(doc => this.projectFields(doc, normalizedQuery.fields));
141
+ if (query.fields && Array.isArray(query.fields)) {
142
+ records = records.map(doc => this.projectFields(doc, query.fields));
135
143
  }
136
144
  return records;
137
145
  }
@@ -175,6 +183,8 @@ class MemoryDriver {
175
183
  updated_at: data.updated_at || now
176
184
  };
177
185
  this.store.set(key, doc);
186
+ // Update indexes
187
+ this.updateIndex(objectName, id, doc);
178
188
  return { ...doc };
179
189
  }
180
190
  /**
@@ -201,6 +211,8 @@ class MemoryDriver {
201
211
  updated_at: new Date().toISOString()
202
212
  };
203
213
  this.store.set(key, doc);
214
+ // Update indexes
215
+ this.updateIndex(objectName, id.toString(), doc);
204
216
  return { ...doc };
205
217
  }
206
218
  /**
@@ -209,6 +221,10 @@ class MemoryDriver {
209
221
  async delete(objectName, id, options) {
210
222
  const key = `${objectName}:${id}`;
211
223
  const deleted = this.store.delete(key);
224
+ // Remove from indexes
225
+ if (deleted) {
226
+ this.removeFromIndex(objectName, id.toString());
227
+ }
212
228
  if (!deleted && this.config.strictMode) {
213
229
  throw new types_1.ObjectQLError({
214
230
  code: 'RECORD_NOT_FOUND',
@@ -223,10 +239,10 @@ class MemoryDriver {
223
239
  */
224
240
  async count(objectName, filters, options) {
225
241
  const pattern = `${objectName}:`;
226
- // Extract actual filters from query object if needed
227
- let actualFilters = filters;
228
- if (filters && !Array.isArray(filters) && filters.filters) {
229
- actualFilters = filters.filters;
242
+ // Extract where condition from query object if needed
243
+ let whereCondition = filters;
244
+ if (filters && !Array.isArray(filters) && filters.where) {
245
+ whereCondition = filters.where;
230
246
  }
231
247
  // Get all records for this object type
232
248
  let records = [];
@@ -236,11 +252,11 @@ class MemoryDriver {
236
252
  }
237
253
  }
238
254
  // If no filters, return total count
239
- if (!actualFilters || (Array.isArray(actualFilters) && actualFilters.length === 0)) {
255
+ if (!whereCondition || (Array.isArray(whereCondition) && whereCondition.length === 0)) {
240
256
  return records.length;
241
257
  }
242
258
  // Convert to MongoDB query and use Mingo to count
243
- const mongoQuery = this.convertToMongoQuery(actualFilters);
259
+ const mongoQuery = this.convertToMongoQuery(whereCondition);
244
260
  if (mongoQuery && Object.keys(mongoQuery).length > 0) {
245
261
  const mingoQuery = new mingo_1.Query(mongoQuery);
246
262
  const matchedRecords = mingoQuery.find(records).all();
@@ -372,10 +388,231 @@ class MemoryDriver {
372
388
  return this.store.size;
373
389
  }
374
390
  /**
375
- * Disconnect (no-op for memory driver).
391
+ * Disconnect and cleanup resources.
376
392
  */
377
393
  async disconnect() {
378
- // No-op: Memory driver doesn't need cleanup
394
+ // Save data to disk if persistence is enabled
395
+ if (this.config.persistence) {
396
+ this.saveToDisk();
397
+ // Clear the auto-save timer
398
+ if (this.persistenceTimer) {
399
+ clearInterval(this.persistenceTimer);
400
+ this.persistenceTimer = undefined;
401
+ }
402
+ }
403
+ }
404
+ /**
405
+ * Perform aggregation operations using Mingo
406
+ * @param objectName - The object type to aggregate
407
+ * @param pipeline - MongoDB-style aggregation pipeline
408
+ * @param options - Optional query options
409
+ * @returns Aggregation results
410
+ *
411
+ * @example
412
+ * // Group by status and count
413
+ * const results = await driver.aggregate('orders', [
414
+ * { $match: { status: 'completed' } },
415
+ * { $group: { _id: '$customer', totalAmount: { $sum: '$amount' } } }
416
+ * ]);
417
+ *
418
+ * @example
419
+ * // Calculate average with filter
420
+ * const results = await driver.aggregate('products', [
421
+ * { $match: { category: 'electronics' } },
422
+ * { $group: { _id: null, avgPrice: { $avg: '$price' } } }
423
+ * ]);
424
+ */
425
+ async aggregate(objectName, pipeline, options) {
426
+ const pattern = `${objectName}:`;
427
+ // Get all records for this object type
428
+ let records = [];
429
+ for (const [key, value] of this.store.entries()) {
430
+ if (key.startsWith(pattern)) {
431
+ records.push({ ...value });
432
+ }
433
+ }
434
+ // Use Mingo to execute the aggregation pipeline
435
+ const aggregator = new mingo_1.Aggregator(pipeline);
436
+ const results = aggregator.run(records);
437
+ return results;
438
+ }
439
+ /**
440
+ * Begin a new transaction
441
+ * @returns Transaction object that can be passed to other methods
442
+ */
443
+ async beginTransaction() {
444
+ const txId = `tx_${Date.now()}_${Math.random().toString(36).substring(7)}`;
445
+ // Create a deep snapshot of the current store to ensure complete transaction isolation
446
+ // This prevents issues with nested objects and arrays being modified during the transaction
447
+ const snapshot = new Map();
448
+ for (const [key, value] of this.store.entries()) {
449
+ snapshot.set(key, JSON.parse(JSON.stringify(value)));
450
+ }
451
+ const transaction = {
452
+ id: txId,
453
+ snapshot,
454
+ operations: []
455
+ };
456
+ this.transactions.set(txId, transaction);
457
+ return { id: txId };
458
+ }
459
+ /**
460
+ * Commit a transaction
461
+ * @param transaction - Transaction object returned by beginTransaction()
462
+ */
463
+ async commitTransaction(transaction) {
464
+ const txId = transaction === null || transaction === void 0 ? void 0 : transaction.id;
465
+ if (!txId) {
466
+ throw new types_1.ObjectQLError({
467
+ code: 'INVALID_TRANSACTION',
468
+ message: 'Invalid transaction object'
469
+ });
470
+ }
471
+ const tx = this.transactions.get(txId);
472
+ if (!tx) {
473
+ throw new types_1.ObjectQLError({
474
+ code: 'TRANSACTION_NOT_FOUND',
475
+ message: `Transaction ${txId} not found`
476
+ });
477
+ }
478
+ // Operations are already applied to the store during the transaction
479
+ // Just clean up the transaction record
480
+ this.transactions.delete(txId);
481
+ }
482
+ /**
483
+ * Rollback a transaction
484
+ * @param transaction - Transaction object returned by beginTransaction()
485
+ */
486
+ async rollbackTransaction(transaction) {
487
+ const txId = transaction === null || transaction === void 0 ? void 0 : transaction.id;
488
+ if (!txId) {
489
+ throw new types_1.ObjectQLError({
490
+ code: 'INVALID_TRANSACTION',
491
+ message: 'Invalid transaction object'
492
+ });
493
+ }
494
+ const tx = this.transactions.get(txId);
495
+ if (!tx) {
496
+ throw new types_1.ObjectQLError({
497
+ code: 'TRANSACTION_NOT_FOUND',
498
+ message: `Transaction ${txId} not found`
499
+ });
500
+ }
501
+ // Restore the snapshot
502
+ this.store = new Map(tx.snapshot);
503
+ // Clean up the transaction
504
+ this.transactions.delete(txId);
505
+ }
506
+ /**
507
+ * Set up persistence to file system
508
+ * @private
509
+ */
510
+ setupPersistence() {
511
+ if (!this.config.persistence)
512
+ return;
513
+ const { filePath, autoSaveInterval = 5000 } = this.config.persistence;
514
+ // Try to load existing data from file
515
+ try {
516
+ const fs = require('fs');
517
+ if (fs.existsSync(filePath)) {
518
+ const fileData = fs.readFileSync(filePath, 'utf8');
519
+ const data = JSON.parse(fileData);
520
+ // Load data into store
521
+ for (const [key, value] of Object.entries(data.store || {})) {
522
+ this.store.set(key, value);
523
+ }
524
+ // Load ID counters
525
+ if (data.idCounters) {
526
+ for (const [key, value] of Object.entries(data.idCounters)) {
527
+ this.idCounters.set(key, value);
528
+ }
529
+ }
530
+ }
531
+ }
532
+ catch (error) {
533
+ console.warn('[MemoryDriver] Failed to load persisted data:', error);
534
+ }
535
+ // Set up auto-save timer
536
+ // Use unref() to allow Node.js process to exit gracefully when idle
537
+ this.persistenceTimer = setInterval(() => {
538
+ this.saveToDisk();
539
+ }, autoSaveInterval);
540
+ this.persistenceTimer.unref();
541
+ }
542
+ /**
543
+ * Save current state to disk
544
+ * @private
545
+ */
546
+ saveToDisk() {
547
+ if (!this.config.persistence)
548
+ return;
549
+ try {
550
+ const fs = require('fs');
551
+ const data = {
552
+ store: Object.fromEntries(this.store),
553
+ idCounters: Object.fromEntries(this.idCounters),
554
+ timestamp: new Date().toISOString()
555
+ };
556
+ fs.writeFileSync(this.config.persistence.filePath, JSON.stringify(data, null, 2), 'utf8');
557
+ }
558
+ catch (error) {
559
+ console.error('[MemoryDriver] Failed to save data to disk:', error);
560
+ }
561
+ }
562
+ /**
563
+ * Build indexes for faster queries
564
+ * @private
565
+ */
566
+ buildIndexes(indexConfig) {
567
+ for (const [objectName, fields] of Object.entries(indexConfig)) {
568
+ const objectIndexes = new Map();
569
+ for (const field of fields) {
570
+ const fieldIndex = new Set();
571
+ // Scan all records of this object type
572
+ const pattern = `${objectName}:`;
573
+ for (const [key, record] of this.store.entries()) {
574
+ if (key.startsWith(pattern)) {
575
+ const fieldValue = record[field];
576
+ if (fieldValue !== undefined && fieldValue !== null) {
577
+ // Store the record ID in the index
578
+ fieldIndex.add(record.id);
579
+ }
580
+ }
581
+ }
582
+ objectIndexes.set(field, fieldIndex);
583
+ }
584
+ this.indexes.set(objectName, objectIndexes);
585
+ }
586
+ }
587
+ /**
588
+ * Update index when a record is created or updated
589
+ * @private
590
+ */
591
+ updateIndex(objectName, recordId, record) {
592
+ const objectIndexes = this.indexes.get(objectName);
593
+ if (!objectIndexes)
594
+ return;
595
+ for (const [field, indexSet] of objectIndexes.entries()) {
596
+ const fieldValue = record[field];
597
+ if (fieldValue !== undefined && fieldValue !== null) {
598
+ indexSet.add(recordId);
599
+ }
600
+ else {
601
+ indexSet.delete(recordId);
602
+ }
603
+ }
604
+ }
605
+ /**
606
+ * Remove record from indexes
607
+ * @private
608
+ */
609
+ removeFromIndex(objectName, recordId) {
610
+ const objectIndexes = this.indexes.get(objectName);
611
+ if (!objectIndexes)
612
+ return;
613
+ for (const indexSet of objectIndexes.values()) {
614
+ indexSet.delete(recordId);
615
+ }
379
616
  }
380
617
  // ========== Helper Methods ==========
381
618
  /**
@@ -385,43 +622,60 @@ class MemoryDriver {
385
622
  * QueryAST format uses 'top' for limit, while UnifiedQuery uses 'limit'.
386
623
  * QueryAST sort is array of {field, order}, while UnifiedQuery is array of [field, order].
387
624
  */
388
- normalizeQuery(query) {
389
- if (!query)
390
- return {};
391
- const normalized = { ...query };
392
- // Normalize limit/top
393
- if (normalized.top !== undefined && normalized.limit === undefined) {
394
- normalized.limit = normalized.top;
395
- }
396
- // Normalize sort format
397
- if (normalized.sort && Array.isArray(normalized.sort)) {
398
- // Check if it's already in the array format [field, order]
399
- const firstSort = normalized.sort[0];
400
- if (firstSort && typeof firstSort === 'object' && !Array.isArray(firstSort)) {
401
- // Convert from QueryAST format {field, order} to internal format [field, order]
402
- normalized.sort = normalized.sort.map((item) => [
403
- item.field,
404
- item.order || item.direction || item.dir || 'asc'
405
- ]);
406
- }
407
- }
408
- return normalized;
409
- }
410
625
  /**
411
626
  * Convert ObjectQL filters to MongoDB query format for Mingo.
412
627
  *
413
- * Supports ObjectQL filter format:
414
- * [
415
- * ['field', 'operator', value],
416
- * 'or',
417
- * ['field2', 'operator', value2]
418
- * ]
628
+ * Supports both:
629
+ * 1. Legacy ObjectQL filter format (array):
630
+ * [['field', 'operator', value], 'or', ['field2', 'operator', value2']]
631
+ * 2. New FilterCondition format (object - already MongoDB-like):
632
+ * { $and: [{ field: { $eq: value }}, { field2: { $gt: value2 }}] }
419
633
  *
420
634
  * Converts to MongoDB query format:
421
635
  * { $or: [{ field: { $operator: value }}, { field2: { $operator: value2 }}] }
422
636
  */
637
+ /**
638
+ * Convert ObjectQL filter format to MongoDB query format.
639
+ * Supports three input formats:
640
+ *
641
+ * 1. AST Comparison Node: { type: 'comparison', field: string, operator: string, value: any }
642
+ * 2. AST Logical Node: { type: 'logical', operator: 'and' | 'or', conditions: Node[] }
643
+ * 3. Legacy Array Format: [field, operator, value, 'and', field2, operator2, value2]
644
+ * 4. MongoDB Format: { field: value } or { field: { $eq: value } } (passthrough)
645
+ *
646
+ * @param filters - Filter in any supported format
647
+ * @returns MongoDB query object
648
+ */
423
649
  convertToMongoQuery(filters) {
424
- if (!filters || filters.length === 0) {
650
+ var _a;
651
+ if (!filters) {
652
+ return {};
653
+ }
654
+ // Handle AST node format (ObjectQL QueryAST)
655
+ if (!Array.isArray(filters) && typeof filters === 'object') {
656
+ // AST Comparison Node: { type: 'comparison', field, operator, value }
657
+ if (filters.type === 'comparison') {
658
+ const mongoCondition = this.convertConditionToMongo(filters.field, filters.operator, filters.value);
659
+ return mongoCondition || {};
660
+ }
661
+ // AST Logical Node: { type: 'logical', operator: 'and' | 'or', conditions: [...] }
662
+ else if (filters.type === 'logical') {
663
+ const conditions = ((_a = filters.conditions) === null || _a === void 0 ? void 0 : _a.map((cond) => this.convertToMongoQuery(cond))) || [];
664
+ if (conditions.length === 0) {
665
+ return {};
666
+ }
667
+ if (conditions.length === 1) {
668
+ return conditions[0];
669
+ }
670
+ const operator = filters.operator === 'or' ? '$or' : '$and';
671
+ return { [operator]: conditions };
672
+ }
673
+ // MongoDB format (passthrough): { field: value } or { field: { $eq: value } }
674
+ // This handles cases where filters is already a proper MongoDB query
675
+ return filters;
676
+ }
677
+ // Handle legacy array format
678
+ if (filters.length === 0) {
425
679
  return {};
426
680
  }
427
681
  // Process the filter array to build MongoDB query
@@ -624,18 +878,9 @@ class MemoryDriver {
624
878
  * @returns Query results with value and count
625
879
  */
626
880
  async executeQuery(ast, options) {
627
- var _a;
628
881
  const objectName = ast.object || '';
629
- // Convert QueryAST to legacy query format
630
- const legacyQuery = {
631
- fields: ast.fields,
632
- filters: this.convertFilterNodeToLegacy(ast.filters),
633
- sort: (_a = ast.sort) === null || _a === void 0 ? void 0 : _a.map((s) => [s.field, s.order]),
634
- limit: ast.top,
635
- offset: ast.skip,
636
- };
637
- // Use existing find method
638
- const results = await this.find(objectName, legacyQuery, options);
882
+ // Use existing find method with QueryAST directly
883
+ const results = await this.find(objectName, ast, options);
639
884
  return {
640
885
  value: results,
641
886
  count: results.length
@@ -739,60 +984,6 @@ class MemoryDriver {
739
984
  };
740
985
  }
741
986
  }
742
- /**
743
- * Convert FilterNode (QueryAST format) to legacy filter array format
744
- * This allows reuse of existing filter logic while supporting new QueryAST
745
- *
746
- * @private
747
- */
748
- convertFilterNodeToLegacy(node) {
749
- if (!node)
750
- return undefined;
751
- switch (node.type) {
752
- case 'comparison':
753
- // Convert comparison node to [field, operator, value] format
754
- const operator = node.operator || '=';
755
- return [[node.field, operator, node.value]];
756
- case 'and':
757
- // Convert AND node to array with 'and' separator
758
- if (!node.children || node.children.length === 0)
759
- return undefined;
760
- const andResults = [];
761
- for (const child of node.children) {
762
- const converted = this.convertFilterNodeToLegacy(child);
763
- if (converted) {
764
- if (andResults.length > 0) {
765
- andResults.push('and');
766
- }
767
- andResults.push(...(Array.isArray(converted) ? converted : [converted]));
768
- }
769
- }
770
- return andResults.length > 0 ? andResults : undefined;
771
- case 'or':
772
- // Convert OR node to array with 'or' separator
773
- if (!node.children || node.children.length === 0)
774
- return undefined;
775
- const orResults = [];
776
- for (const child of node.children) {
777
- const converted = this.convertFilterNodeToLegacy(child);
778
- if (converted) {
779
- if (orResults.length > 0) {
780
- orResults.push('or');
781
- }
782
- orResults.push(...(Array.isArray(converted) ? converted : [converted]));
783
- }
784
- }
785
- return orResults.length > 0 ? orResults : undefined;
786
- case 'not':
787
- // NOT is complex - we'll just process the first child for now
788
- if (node.children && node.children.length > 0) {
789
- return this.convertFilterNodeToLegacy(node.children[0]);
790
- }
791
- return undefined;
792
- default:
793
- return undefined;
794
- }
795
- }
796
987
  /**
797
988
  * Execute command (alternative signature for compatibility)
798
989
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}