Skip to content

Commit a329748

Browse files
authored
refactor(NODE-5352): refactor AbstractOperation to use async (#3729)
1 parent 1d31888 commit a329748

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+237
-158
lines changed

src/bulk/common.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { CollationOptions, CommandOperationOptions } from '../operations/co
1313
import { DeleteOperation, type DeleteStatement, makeDeleteStatement } from '../operations/delete';
1414
import { executeOperation } from '../operations/execute_operation';
1515
import { InsertOperation } from '../operations/insert';
16-
import { AbstractOperation, type Hint } from '../operations/operation';
16+
import { AbstractCallbackOperation, type Hint } from '../operations/operation';
1717
import { makeUpdateStatement, UpdateOperation, type UpdateStatement } from '../operations/update';
1818
import type { Server } from '../sdam/server';
1919
import type { Topology } from '../sdam/topology';
@@ -881,14 +881,18 @@ export interface BulkWriteOptions extends CommandOperationOptions {
881881
* We would like this logic to simply live inside the BulkWriteOperation class
882882
* @internal
883883
*/
884-
class BulkWriteShimOperation extends AbstractOperation {
884+
class BulkWriteShimOperation extends AbstractCallbackOperation {
885885
bulkOperation: BulkOperationBase;
886886
constructor(bulkOperation: BulkOperationBase, options: BulkWriteOptions) {
887887
super(options);
888888
this.bulkOperation = bulkOperation;
889889
}
890890

891-
execute(server: Server, session: ClientSession | undefined, callback: Callback<any>): void {
891+
executeCallback(
892+
server: Server,
893+
session: ClientSession | undefined,
894+
callback: Callback<any>
895+
): void {
892896
if (this.options.session == null) {
893897
// An implicit session could have been created by 'executeOperation'
894898
// So if we stick it on finalOptions here, each bulk operation

src/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,12 @@ export type {
419419
export type { InsertManyResult, InsertOneOptions, InsertOneResult } from './operations/insert';
420420
export type { CollectionInfo, ListCollectionsOptions } from './operations/list_collections';
421421
export type { ListDatabasesOptions, ListDatabasesResult } from './operations/list_databases';
422-
export type { AbstractOperation, Hint, OperationOptions } from './operations/operation';
422+
export type {
423+
AbstractCallbackOperation,
424+
AbstractOperation,
425+
Hint,
426+
OperationOptions
427+
} from './operations/operation';
423428
export type { ProfilingLevelOptions } from './operations/profiling_level';
424429
export type { RemoveUserOptions } from './operations/remove_user';
425430
export type { RenameOptions } from './operations/rename';

src/operations/add_user.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class AddUserOperation extends CommandOperation<Document> {
5050
this.options = options ?? {};
5151
}
5252

53-
override execute(
53+
override executeCallback(
5454
server: Server,
5555
session: ClientSession | undefined,
5656
callback: Callback<Document>

src/operations/aggregate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class AggregateOperation<T = Document> extends CommandOperation<T> {
8888
this.pipeline.push(stage);
8989
}
9090

91-
override execute(
91+
override executeCallback(
9292
server: Server,
9393
session: ClientSession | undefined,
9494
callback: Callback<T>

src/operations/bulk_write.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import type { Collection } from '../collection';
88
import type { Server } from '../sdam/server';
99
import type { ClientSession } from '../sessions';
1010
import type { Callback } from '../utils';
11-
import { AbstractOperation, Aspect, defineAspects } from './operation';
11+
import { AbstractCallbackOperation, Aspect, defineAspects } from './operation';
1212

1313
/** @internal */
14-
export class BulkWriteOperation extends AbstractOperation<BulkWriteResult> {
14+
export class BulkWriteOperation extends AbstractCallbackOperation<BulkWriteResult> {
1515
override options: BulkWriteOptions;
1616
collection: Collection;
1717
operations: AnyBulkWriteOperation[];
@@ -27,7 +27,7 @@ export class BulkWriteOperation extends AbstractOperation<BulkWriteResult> {
2727
this.operations = operations;
2828
}
2929

30-
override execute(
30+
override executeCallback(
3131
server: Server,
3232
session: ClientSession | undefined,
3333
callback: Callback<BulkWriteResult>

src/operations/collections.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import type { Db } from '../db';
33
import type { Server } from '../sdam/server';
44
import type { ClientSession } from '../sessions';
55
import type { Callback } from '../utils';
6-
import { AbstractOperation, type OperationOptions } from './operation';
6+
import { AbstractCallbackOperation, type OperationOptions } from './operation';
77

88
export interface CollectionsOptions extends OperationOptions {
99
nameOnly?: boolean;
1010
}
1111

1212
/** @internal */
13-
export class CollectionsOperation extends AbstractOperation<Collection[]> {
13+
export class CollectionsOperation extends AbstractCallbackOperation<Collection[]> {
1414
override options: CollectionsOptions;
1515
db: Db;
1616

@@ -20,7 +20,7 @@ export class CollectionsOperation extends AbstractOperation<Collection[]> {
2020
this.db = db;
2121
}
2222

23-
override execute(
23+
override executeCallback(
2424
server: Server,
2525
session: ClientSession | undefined,
2626
callback: Callback<Collection[]>

src/operations/command.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from '../utils';
1616
import { WriteConcern, type WriteConcernOptions } from '../write_concern';
1717
import type { ReadConcernLike } from './../read_concern';
18-
import { AbstractOperation, Aspect, type OperationOptions } from './operation';
18+
import { AbstractCallbackOperation, Aspect, type OperationOptions } from './operation';
1919

2020
/** @public */
2121
export interface CollationOptions {
@@ -68,7 +68,7 @@ export interface OperationParent {
6868
}
6969

7070
/** @internal */
71-
export abstract class CommandOperation<T> extends AbstractOperation<T> {
71+
export abstract class CommandOperation<T> extends AbstractCallbackOperation<T> {
7272
override options: CommandOperationOptions;
7373
readConcern?: ReadConcern;
7474
writeConcern?: WriteConcern;

src/operations/count.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class CountOperation extends CommandOperation<number> {
3232
this.query = filter;
3333
}
3434

35-
override execute(
35+
override executeCallback(
3636
server: Server,
3737
session: ClientSession | undefined,
3838
callback: Callback<number>

src/operations/count_documents.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ export class CountDocumentsOperation extends AggregateOperation<number> {
3232
super(collection.s.namespace, pipeline, options);
3333
}
3434

35-
override execute(
35+
override executeCallback(
3636
server: Server,
3737
session: ClientSession | undefined,
3838
callback: Callback<number>
3939
): void {
40-
super.execute(server, session, (err, result) => {
40+
super.executeCallback(server, session, (err, result) => {
4141
if (err || !result) {
4242
callback(err);
4343
return;

src/operations/create_collection.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export class CreateCollectionOperation extends CommandOperation<Collection> {
121121
this.name = name;
122122
}
123123

124-
override execute(
124+
override executeCallback(
125125
server: Server,
126126
session: ClientSession | undefined,
127127
callback: Callback<Collection>
@@ -170,9 +170,7 @@ export class CreateCollectionOperation extends CommandOperation<Collection> {
170170
if (encryptedFields) {
171171
// Create the required index for queryable encryption support.
172172
const createIndexOp = new CreateIndexOperation(db, name, { __safeContent__: 1 }, {});
173-
await new Promise<void>((resolve, reject) => {
174-
createIndexOp.execute(server, session, err => (err ? reject(err) : resolve()));
175-
});
173+
await createIndexOp.execute(server, session);
176174
}
177175

178176
return coll;

0 commit comments

Comments
 (0)