@objectql/driver-mongo 4.0.3 → 4.0.4
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +42 -0
- package/dist/index.d.ts +44 -1
- package/dist/index.js +134 -11
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +147 -12
- package/test/index.test.ts +15 -13
- package/test/integration.test.ts +10 -10
- package/test/tck.test.ts +73 -0
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# @objectql/driver-mongo
|
|
2
2
|
|
|
3
|
+
## 4.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- **Patch Release v4.0.4**
|
|
8
|
+
|
|
9
|
+
This patch release includes bug fixes, driver improvements, and enhanced test coverage:
|
|
10
|
+
|
|
11
|
+
### Driver Improvements
|
|
12
|
+
- **MongoDB Driver**: Fixed bulk operations, transaction support, and type safety improvements
|
|
13
|
+
- **FileSystem Driver**: Fixed TCK test compatibility with dataDir parameter
|
|
14
|
+
- **SQL Driver**: Enhanced TCK test compatibility and fixed test failures
|
|
15
|
+
- **Redis Driver**: Improved TCK test configuration and dependencies
|
|
16
|
+
- **Driver Utils**: Added shared utilities package for cross-driver functionality
|
|
17
|
+
|
|
18
|
+
### Testing & Quality
|
|
19
|
+
- Added comprehensive TCK (Technology Compatibility Kit) compliance tests for all drivers
|
|
20
|
+
- Expanded TCK test suite to 30+ comprehensive tests
|
|
21
|
+
- Enhanced test infrastructure with better error handling
|
|
22
|
+
- Added --passWithNoTests flag for packages without tests
|
|
23
|
+
|
|
24
|
+
### Type Safety
|
|
25
|
+
- Improved type safety in MongoDB driver update methods
|
|
26
|
+
- Better handling of atomic operators in MongoDB driver
|
|
27
|
+
- Enhanced type definitions across driver layer
|
|
28
|
+
|
|
29
|
+
### Documentation
|
|
30
|
+
- Added comprehensive driver documentation
|
|
31
|
+
- Enhanced official documentation with Phase 2 implementation summaries
|
|
32
|
+
- Improved protocol layer documentation
|
|
33
|
+
|
|
34
|
+
### Infrastructure
|
|
35
|
+
- Standardized driver layer implementation
|
|
36
|
+
- Enhanced protocol layer with better abstraction
|
|
37
|
+
- Improved GitHub Actions workflow configurations
|
|
38
|
+
- Better CI/CD pipeline stability
|
|
39
|
+
|
|
40
|
+
This release maintains full backward compatibility with v4.0.3.
|
|
41
|
+
|
|
42
|
+
- Updated dependencies
|
|
43
|
+
- @objectql/types@4.0.4
|
|
44
|
+
|
|
3
45
|
## 4.0.3
|
|
4
46
|
|
|
5
47
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -136,7 +136,7 @@ export declare class MongoDriver implements Driver {
|
|
|
136
136
|
find(objectName: string, query: any, options?: any): Promise<any[]>;
|
|
137
137
|
findOne(objectName: string, id: string | number, query?: any, options?: any): Promise<any>;
|
|
138
138
|
create(objectName: string, data: any, options?: any): Promise<any>;
|
|
139
|
-
update(objectName: string, id: string | number, data: any, options?: any): Promise<
|
|
139
|
+
update(objectName: string, id: string | number, data: any, options?: any): Promise<any>;
|
|
140
140
|
delete(objectName: string, id: string | number, options?: any): Promise<number>;
|
|
141
141
|
count(objectName: string, filters: any, options?: any): Promise<number>;
|
|
142
142
|
createMany(objectName: string, data: any[], options?: any): Promise<any>;
|
|
@@ -169,6 +169,49 @@ export declare class MongoDriver implements Driver {
|
|
|
169
169
|
* );
|
|
170
170
|
*/
|
|
171
171
|
findOneAndUpdate(objectName: string, filters: any, update: any, options?: any): Promise<any>;
|
|
172
|
+
/**
|
|
173
|
+
* Begin a new transaction session
|
|
174
|
+
*
|
|
175
|
+
* @returns MongoDB ClientSession that can be used for transactional operations
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* const session = await driver.beginTransaction();
|
|
179
|
+
* try {
|
|
180
|
+
* await driver.create('users', { name: 'Alice' }, { session });
|
|
181
|
+
* await driver.create('orders', { userId: 'alice' }, { session });
|
|
182
|
+
* await driver.commitTransaction(session);
|
|
183
|
+
* } catch (error) {
|
|
184
|
+
* await driver.rollbackTransaction(session);
|
|
185
|
+
* throw error;
|
|
186
|
+
* }
|
|
187
|
+
*/
|
|
188
|
+
beginTransaction(): Promise<any>;
|
|
189
|
+
/**
|
|
190
|
+
* Commit a transaction
|
|
191
|
+
*
|
|
192
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* const session = await driver.beginTransaction();
|
|
196
|
+
* // ... perform operations with { session } in options
|
|
197
|
+
* await driver.commitTransaction(session);
|
|
198
|
+
*/
|
|
199
|
+
commitTransaction(transaction: any): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Rollback a transaction
|
|
202
|
+
*
|
|
203
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* const session = await driver.beginTransaction();
|
|
207
|
+
* try {
|
|
208
|
+
* // ... perform operations
|
|
209
|
+
* await driver.commitTransaction(session);
|
|
210
|
+
* } catch (error) {
|
|
211
|
+
* await driver.rollbackTransaction(session);
|
|
212
|
+
* }
|
|
213
|
+
*/
|
|
214
|
+
rollbackTransaction(transaction: any): Promise<void>;
|
|
172
215
|
disconnect(): Promise<void>;
|
|
173
216
|
/**
|
|
174
217
|
* Watch for changes in a collection using MongoDB Change Streams
|
package/dist/index.js
CHANGED
|
@@ -344,7 +344,20 @@ class MongoDriver {
|
|
|
344
344
|
if (!mongoDoc._id) {
|
|
345
345
|
mongoDoc._id = new mongodb_1.ObjectId().toHexString();
|
|
346
346
|
}
|
|
347
|
-
|
|
347
|
+
// Add timestamps if not already present
|
|
348
|
+
const now = new Date().toISOString();
|
|
349
|
+
if (!mongoDoc.created_at) {
|
|
350
|
+
mongoDoc.created_at = now;
|
|
351
|
+
}
|
|
352
|
+
if (!mongoDoc.updated_at) {
|
|
353
|
+
mongoDoc.updated_at = now;
|
|
354
|
+
}
|
|
355
|
+
// Pass session for transactional operations only if it exists
|
|
356
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
357
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
358
|
+
const result = session
|
|
359
|
+
? await collection.insertOne(mongoDoc, { session })
|
|
360
|
+
: await collection.insertOne(mongoDoc);
|
|
348
361
|
// Return API format document (convert _id to id)
|
|
349
362
|
return this.mapFromMongo({ ...mongoDoc, _id: result.insertedId });
|
|
350
363
|
}
|
|
@@ -352,16 +365,45 @@ class MongoDriver {
|
|
|
352
365
|
const collection = await this.getCollection(objectName);
|
|
353
366
|
// Map API document (id) to MongoDB document (_id) for update data
|
|
354
367
|
// But we should not allow updating the _id field itself
|
|
355
|
-
const { id: _ignoredId, ...updateData } = data; // intentionally ignore id to prevent updating
|
|
368
|
+
const { id: _ignoredId, created_at: _ignoredCreatedAt, ...updateData } = data; // intentionally ignore id and created_at to prevent updating them
|
|
356
369
|
// Handle atomic operators if present
|
|
357
370
|
const isAtomic = Object.keys(updateData).some(k => k.startsWith('$'));
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
371
|
+
// Build the update object with updated_at timestamp
|
|
372
|
+
let update;
|
|
373
|
+
if (isAtomic) {
|
|
374
|
+
// When using atomic operators, add updated_at to $set
|
|
375
|
+
// The spread is safe because id and created_at were already removed via destructuring
|
|
376
|
+
update = { ...updateData };
|
|
377
|
+
if (!update.$set) {
|
|
378
|
+
update.$set = {};
|
|
379
|
+
}
|
|
380
|
+
update.$set.updated_at = new Date().toISOString();
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// For regular updates, add updated_at to the data
|
|
384
|
+
updateData.updated_at = new Date().toISOString();
|
|
385
|
+
update = { $set: updateData };
|
|
386
|
+
}
|
|
387
|
+
// Use findOneAndUpdate to return the updated document
|
|
388
|
+
const mongoOptions = { returnDocument: 'after' };
|
|
389
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
390
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
391
|
+
if (session) {
|
|
392
|
+
mongoOptions.session = session;
|
|
393
|
+
}
|
|
394
|
+
const result = await collection.findOneAndUpdate({ _id: this.normalizeId(id) }, update, mongoOptions);
|
|
395
|
+
// Return API format document (convert _id to id)
|
|
396
|
+
// findOneAndUpdate returns an object with a 'value' property containing the document
|
|
397
|
+
return this.mapFromMongo(result === null || result === void 0 ? void 0 : result.value);
|
|
361
398
|
}
|
|
362
399
|
async delete(objectName, id, options) {
|
|
363
400
|
const collection = await this.getCollection(objectName);
|
|
364
|
-
|
|
401
|
+
// Pass session for transactional operations only if it exists
|
|
402
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
403
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
404
|
+
const result = session
|
|
405
|
+
? await collection.deleteOne({ _id: this.normalizeId(id) }, { session })
|
|
406
|
+
: await collection.deleteOne({ _id: this.normalizeId(id) });
|
|
365
407
|
return result.deletedCount;
|
|
366
408
|
}
|
|
367
409
|
async count(objectName, filters, options) {
|
|
@@ -388,7 +430,11 @@ class MongoDriver {
|
|
|
388
430
|
}
|
|
389
431
|
return mongoDoc;
|
|
390
432
|
});
|
|
391
|
-
|
|
433
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
434
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
435
|
+
const result = session
|
|
436
|
+
? await collection.insertMany(mongoDocs, { session })
|
|
437
|
+
: await collection.insertMany(mongoDocs);
|
|
392
438
|
// Return API format (convert _id to id)
|
|
393
439
|
return Object.values(result.insertedIds).map(id => ({ id }));
|
|
394
440
|
}
|
|
@@ -399,14 +445,22 @@ class MongoDriver {
|
|
|
399
445
|
const { id: idToIgnore, ...updateData } = data;
|
|
400
446
|
const isAtomic = Object.keys(updateData).some(k => k.startsWith('$'));
|
|
401
447
|
const update = isAtomic ? updateData : { $set: updateData };
|
|
402
|
-
|
|
403
|
-
|
|
448
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
449
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
450
|
+
const result = session
|
|
451
|
+
? await collection.updateMany(filter, update, { session })
|
|
452
|
+
: await collection.updateMany(filter, update);
|
|
453
|
+
return { modifiedCount: result.modifiedCount };
|
|
404
454
|
}
|
|
405
455
|
async deleteMany(objectName, filters, options) {
|
|
406
456
|
const collection = await this.getCollection(objectName);
|
|
407
457
|
const filter = this.mapFilters(filters);
|
|
408
|
-
|
|
409
|
-
|
|
458
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
459
|
+
const session = (options === null || options === void 0 ? void 0 : options.transaction) || (options === null || options === void 0 ? void 0 : options.session);
|
|
460
|
+
const result = session
|
|
461
|
+
? await collection.deleteMany(filter, { session })
|
|
462
|
+
: await collection.deleteMany(filter);
|
|
463
|
+
return { deletedCount: result.deletedCount };
|
|
410
464
|
}
|
|
411
465
|
async aggregate(objectName, pipeline, options) {
|
|
412
466
|
const collection = await this.getCollection(objectName);
|
|
@@ -464,6 +518,75 @@ class MongoDriver {
|
|
|
464
518
|
const doc = (result === null || result === void 0 ? void 0 : result.value) !== undefined ? result.value : result;
|
|
465
519
|
return doc ? this.mapFromMongo(doc) : null;
|
|
466
520
|
}
|
|
521
|
+
// ========== Transaction Support ==========
|
|
522
|
+
/**
|
|
523
|
+
* Begin a new transaction session
|
|
524
|
+
*
|
|
525
|
+
* @returns MongoDB ClientSession that can be used for transactional operations
|
|
526
|
+
*
|
|
527
|
+
* @example
|
|
528
|
+
* const session = await driver.beginTransaction();
|
|
529
|
+
* try {
|
|
530
|
+
* await driver.create('users', { name: 'Alice' }, { session });
|
|
531
|
+
* await driver.create('orders', { userId: 'alice' }, { session });
|
|
532
|
+
* await driver.commitTransaction(session);
|
|
533
|
+
* } catch (error) {
|
|
534
|
+
* await driver.rollbackTransaction(session);
|
|
535
|
+
* throw error;
|
|
536
|
+
* }
|
|
537
|
+
*/
|
|
538
|
+
async beginTransaction() {
|
|
539
|
+
await this.connected;
|
|
540
|
+
const session = this.client.startSession();
|
|
541
|
+
session.startTransaction();
|
|
542
|
+
return session;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Commit a transaction
|
|
546
|
+
*
|
|
547
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
548
|
+
*
|
|
549
|
+
* @example
|
|
550
|
+
* const session = await driver.beginTransaction();
|
|
551
|
+
* // ... perform operations with { session } in options
|
|
552
|
+
* await driver.commitTransaction(session);
|
|
553
|
+
*/
|
|
554
|
+
async commitTransaction(transaction) {
|
|
555
|
+
if (!transaction || typeof transaction.commitTransaction !== 'function') {
|
|
556
|
+
throw new Error('Invalid transaction object. Must be a MongoDB ClientSession.');
|
|
557
|
+
}
|
|
558
|
+
try {
|
|
559
|
+
await transaction.commitTransaction();
|
|
560
|
+
}
|
|
561
|
+
finally {
|
|
562
|
+
await transaction.endSession();
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Rollback a transaction
|
|
567
|
+
*
|
|
568
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
569
|
+
*
|
|
570
|
+
* @example
|
|
571
|
+
* const session = await driver.beginTransaction();
|
|
572
|
+
* try {
|
|
573
|
+
* // ... perform operations
|
|
574
|
+
* await driver.commitTransaction(session);
|
|
575
|
+
* } catch (error) {
|
|
576
|
+
* await driver.rollbackTransaction(session);
|
|
577
|
+
* }
|
|
578
|
+
*/
|
|
579
|
+
async rollbackTransaction(transaction) {
|
|
580
|
+
if (!transaction || typeof transaction.abortTransaction !== 'function') {
|
|
581
|
+
throw new Error('Invalid transaction object. Must be a MongoDB ClientSession.');
|
|
582
|
+
}
|
|
583
|
+
try {
|
|
584
|
+
await transaction.abortTransaction();
|
|
585
|
+
}
|
|
586
|
+
finally {
|
|
587
|
+
await transaction.endSession();
|
|
588
|
+
}
|
|
589
|
+
}
|
|
467
590
|
async disconnect() {
|
|
468
591
|
// Close all active change streams
|
|
469
592
|
for (const [streamId, stream] of this.changeStreams.entries()) {
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectql/driver-mongo",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.4",
|
|
4
4
|
"description": "MongoDB driver for ObjectQL - Native aggregation pipeline translation for high-performance NoSQL operations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"objectql",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"main": "dist/index.js",
|
|
17
17
|
"types": "dist/index.d.ts",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@objectstack/spec": "^0.8.
|
|
19
|
+
"@objectstack/spec": "^0.8.2",
|
|
20
20
|
"mongodb": "^5.9.2",
|
|
21
|
-
"@objectql/types": "4.0.
|
|
21
|
+
"@objectql/types": "4.0.4"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"mongodb-memory-server": "^11.0.1"
|
package/src/index.ts
CHANGED
|
@@ -11,7 +11,7 @@ type DriverInterface = Data.DriverInterface;
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { Driver } from '@objectql/types';
|
|
14
|
-
import { MongoClient, Db, Filter, ObjectId, FindOptions, ChangeStream, ChangeStreamDocument } from 'mongodb';
|
|
14
|
+
import { MongoClient, Db, Filter, ObjectId, FindOptions, FindOneAndUpdateOptions, UpdateFilter, ChangeStream, ChangeStreamDocument } from 'mongodb';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Change stream event handler callback
|
|
@@ -410,7 +410,22 @@ export class MongoDriver implements Driver {
|
|
|
410
410
|
mongoDoc._id = new ObjectId().toHexString();
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
// Add timestamps if not already present
|
|
414
|
+
const now = new Date().toISOString();
|
|
415
|
+
if (!mongoDoc.created_at) {
|
|
416
|
+
mongoDoc.created_at = now;
|
|
417
|
+
}
|
|
418
|
+
if (!mongoDoc.updated_at) {
|
|
419
|
+
mongoDoc.updated_at = now;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// Pass session for transactional operations only if it exists
|
|
423
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
424
|
+
const session = options?.transaction || options?.session;
|
|
425
|
+
const result = session
|
|
426
|
+
? await collection.insertOne(mongoDoc, { session })
|
|
427
|
+
: await collection.insertOne(mongoDoc);
|
|
428
|
+
|
|
414
429
|
// Return API format document (convert _id to id)
|
|
415
430
|
return this.mapFromMongo({ ...mongoDoc, _id: result.insertedId });
|
|
416
431
|
}
|
|
@@ -420,19 +435,54 @@ export class MongoDriver implements Driver {
|
|
|
420
435
|
|
|
421
436
|
// Map API document (id) to MongoDB document (_id) for update data
|
|
422
437
|
// But we should not allow updating the _id field itself
|
|
423
|
-
const { id: _ignoredId, ...updateData } = data; // intentionally ignore id to prevent updating
|
|
438
|
+
const { id: _ignoredId, created_at: _ignoredCreatedAt, ...updateData } = data; // intentionally ignore id and created_at to prevent updating them
|
|
424
439
|
|
|
425
440
|
// Handle atomic operators if present
|
|
426
441
|
const isAtomic = Object.keys(updateData).some(k => k.startsWith('$'));
|
|
427
|
-
|
|
442
|
+
|
|
443
|
+
// Build the update object with updated_at timestamp
|
|
444
|
+
let update: UpdateFilter<any>;
|
|
445
|
+
if (isAtomic) {
|
|
446
|
+
// When using atomic operators, add updated_at to $set
|
|
447
|
+
// The spread is safe because id and created_at were already removed via destructuring
|
|
448
|
+
update = { ...updateData } as any;
|
|
449
|
+
if (!update.$set) {
|
|
450
|
+
update.$set = {};
|
|
451
|
+
}
|
|
452
|
+
update.$set.updated_at = new Date().toISOString();
|
|
453
|
+
} else {
|
|
454
|
+
// For regular updates, add updated_at to the data
|
|
455
|
+
updateData.updated_at = new Date().toISOString();
|
|
456
|
+
update = { $set: updateData };
|
|
457
|
+
}
|
|
428
458
|
|
|
429
|
-
|
|
430
|
-
|
|
459
|
+
// Use findOneAndUpdate to return the updated document
|
|
460
|
+
const mongoOptions: FindOneAndUpdateOptions = { returnDocument: 'after' };
|
|
461
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
462
|
+
const session = options?.transaction || options?.session;
|
|
463
|
+
if (session) {
|
|
464
|
+
mongoOptions.session = session;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const result = await collection.findOneAndUpdate(
|
|
468
|
+
{ _id: this.normalizeId(id) },
|
|
469
|
+
update,
|
|
470
|
+
mongoOptions
|
|
471
|
+
);
|
|
472
|
+
|
|
473
|
+
// Return API format document (convert _id to id)
|
|
474
|
+
// findOneAndUpdate returns an object with a 'value' property containing the document
|
|
475
|
+
return this.mapFromMongo(result?.value);
|
|
431
476
|
}
|
|
432
477
|
|
|
433
478
|
async delete(objectName: string, id: string | number, options?: any) {
|
|
434
479
|
const collection = await this.getCollection(objectName);
|
|
435
|
-
|
|
480
|
+
// Pass session for transactional operations only if it exists
|
|
481
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
482
|
+
const session = options?.transaction || options?.session;
|
|
483
|
+
const result = session
|
|
484
|
+
? await collection.deleteOne({ _id: this.normalizeId(id) }, { session })
|
|
485
|
+
: await collection.deleteOne({ _id: this.normalizeId(id) });
|
|
436
486
|
return result.deletedCount;
|
|
437
487
|
}
|
|
438
488
|
|
|
@@ -460,7 +510,11 @@ export class MongoDriver implements Driver {
|
|
|
460
510
|
}
|
|
461
511
|
return mongoDoc;
|
|
462
512
|
});
|
|
463
|
-
|
|
513
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
514
|
+
const session = options?.transaction || options?.session;
|
|
515
|
+
const result = session
|
|
516
|
+
? await collection.insertMany(mongoDocs, { session })
|
|
517
|
+
: await collection.insertMany(mongoDocs);
|
|
464
518
|
// Return API format (convert _id to id)
|
|
465
519
|
return Object.values(result.insertedIds).map(id => ({ id }));
|
|
466
520
|
}
|
|
@@ -475,15 +529,23 @@ export class MongoDriver implements Driver {
|
|
|
475
529
|
const isAtomic = Object.keys(updateData).some(k => k.startsWith('$'));
|
|
476
530
|
const update = isAtomic ? updateData : { $set: updateData };
|
|
477
531
|
|
|
478
|
-
|
|
479
|
-
|
|
532
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
533
|
+
const session = options?.transaction || options?.session;
|
|
534
|
+
const result = session
|
|
535
|
+
? await collection.updateMany(filter, update, { session })
|
|
536
|
+
: await collection.updateMany(filter, update);
|
|
537
|
+
return { modifiedCount: result.modifiedCount };
|
|
480
538
|
}
|
|
481
539
|
|
|
482
540
|
async deleteMany(objectName: string, filters: any, options?: any): Promise<any> {
|
|
483
541
|
const collection = await this.getCollection(objectName);
|
|
484
542
|
const filter = this.mapFilters(filters);
|
|
485
|
-
|
|
486
|
-
|
|
543
|
+
// Support both 'transaction' and 'session' option keys for compatibility
|
|
544
|
+
const session = options?.transaction || options?.session;
|
|
545
|
+
const result = session
|
|
546
|
+
? await collection.deleteMany(filter, { session })
|
|
547
|
+
: await collection.deleteMany(filter);
|
|
548
|
+
return { deletedCount: result.deletedCount };
|
|
487
549
|
}
|
|
488
550
|
|
|
489
551
|
async aggregate(objectName: string, pipeline: any[], options?: any): Promise<any[]> {
|
|
@@ -552,6 +614,79 @@ export class MongoDriver implements Driver {
|
|
|
552
614
|
return doc ? this.mapFromMongo(doc) : null;
|
|
553
615
|
}
|
|
554
616
|
|
|
617
|
+
// ========== Transaction Support ==========
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Begin a new transaction session
|
|
621
|
+
*
|
|
622
|
+
* @returns MongoDB ClientSession that can be used for transactional operations
|
|
623
|
+
*
|
|
624
|
+
* @example
|
|
625
|
+
* const session = await driver.beginTransaction();
|
|
626
|
+
* try {
|
|
627
|
+
* await driver.create('users', { name: 'Alice' }, { session });
|
|
628
|
+
* await driver.create('orders', { userId: 'alice' }, { session });
|
|
629
|
+
* await driver.commitTransaction(session);
|
|
630
|
+
* } catch (error) {
|
|
631
|
+
* await driver.rollbackTransaction(session);
|
|
632
|
+
* throw error;
|
|
633
|
+
* }
|
|
634
|
+
*/
|
|
635
|
+
async beginTransaction(): Promise<any> {
|
|
636
|
+
await this.connected;
|
|
637
|
+
const session = this.client.startSession();
|
|
638
|
+
session.startTransaction();
|
|
639
|
+
return session;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
/**
|
|
643
|
+
* Commit a transaction
|
|
644
|
+
*
|
|
645
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
646
|
+
*
|
|
647
|
+
* @example
|
|
648
|
+
* const session = await driver.beginTransaction();
|
|
649
|
+
* // ... perform operations with { session } in options
|
|
650
|
+
* await driver.commitTransaction(session);
|
|
651
|
+
*/
|
|
652
|
+
async commitTransaction(transaction: any): Promise<void> {
|
|
653
|
+
if (!transaction || typeof transaction.commitTransaction !== 'function') {
|
|
654
|
+
throw new Error('Invalid transaction object. Must be a MongoDB ClientSession.');
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
try {
|
|
658
|
+
await transaction.commitTransaction();
|
|
659
|
+
} finally {
|
|
660
|
+
await transaction.endSession();
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Rollback a transaction
|
|
666
|
+
*
|
|
667
|
+
* @param transaction - MongoDB ClientSession returned by beginTransaction()
|
|
668
|
+
*
|
|
669
|
+
* @example
|
|
670
|
+
* const session = await driver.beginTransaction();
|
|
671
|
+
* try {
|
|
672
|
+
* // ... perform operations
|
|
673
|
+
* await driver.commitTransaction(session);
|
|
674
|
+
* } catch (error) {
|
|
675
|
+
* await driver.rollbackTransaction(session);
|
|
676
|
+
* }
|
|
677
|
+
*/
|
|
678
|
+
async rollbackTransaction(transaction: any): Promise<void> {
|
|
679
|
+
if (!transaction || typeof transaction.abortTransaction !== 'function') {
|
|
680
|
+
throw new Error('Invalid transaction object. Must be a MongoDB ClientSession.');
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
try {
|
|
684
|
+
await transaction.abortTransaction();
|
|
685
|
+
} finally {
|
|
686
|
+
await transaction.endSession();
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
555
690
|
async disconnect() {
|
|
556
691
|
// Close all active change streams
|
|
557
692
|
for (const [streamId, stream] of this.changeStreams.entries()) {
|