Skip to content

Commit 2e32428

Browse files
remove commandoperation
1 parent d06bcc5 commit 2e32428

23 files changed

+47
-150
lines changed

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ export type {
511511
CollationOptions,
512512
CommandOperation,
513513
CommandOperationOptions,
514-
ModernizedCommandOperation,
514+
CommandOperation as ModernizedCommandOperation,
515515
OperationParent
516516
} from './operations/command';
517517
export type { CountOptions } from './operations/count';

src/operations/aggregate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { WriteConcern } from '../write_concern';
99
import {
1010
type CollationOptions,
1111
type CommandOperationOptions,
12-
ModernizedCommandOperation
12+
CommandOperation
1313
} from './command';
1414
import { Aspect, defineAspects, type Hint } from './operation';
1515

@@ -53,7 +53,7 @@ export interface AggregateOptions extends Omit<CommandOperationOptions, 'explain
5353
}
5454

5555
/** @internal */
56-
export class AggregateOperation extends ModernizedCommandOperation<CursorResponse> {
56+
export class AggregateOperation extends CommandOperation<CursorResponse> {
5757
override SERVER_COMMAND_RESPONSE_TYPE = CursorResponse;
5858
override options: AggregateOptions;
5959
target: string | typeof DB_AGGREGATE_COLLECTION;

src/operations/client_bulk_write/client_bulk_write.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { type Connection } from '../../cmap/connection';
22
import { ClientBulkWriteCursorResponse } from '../../cmap/wire_protocol/responses';
33
import type { ClientSession } from '../../sessions';
44
import { MongoDBNamespace } from '../../utils';
5-
import { ModernizedCommandOperation } from '../command';
5+
import { CommandOperation } from '../command';
66
import { Aspect, defineAspects } from '../operation';
77
import { type ClientBulkWriteCommand, type ClientBulkWriteCommandBuilder } from './command_builder';
88
import { type ClientBulkWriteOptions } from './common';
@@ -11,7 +11,7 @@ import { type ClientBulkWriteOptions } from './common';
1111
* Executes a single client bulk write operation within a potential batch.
1212
* @internal
1313
*/
14-
export class ClientBulkWriteOperation extends ModernizedCommandOperation<ClientBulkWriteCursorResponse> {
14+
export class ClientBulkWriteOperation extends CommandOperation<ClientBulkWriteCursorResponse> {
1515
override SERVER_COMMAND_RESPONSE_TYPE = ClientBulkWriteCursorResponse;
1616

1717
commandBuilder: ClientBulkWriteCommandBuilder;

src/operations/command.ts

Lines changed: 1 addition & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -77,110 +77,7 @@ export interface OperationParent {
7777
}
7878

7979
/** @internal */
80-
export abstract class CommandOperation<T> extends AbstractOperation<T> {
81-
override options: CommandOperationOptions;
82-
readConcern?: ReadConcern;
83-
writeConcern?: WriteConcern;
84-
explain?: Explain;
85-
86-
constructor(parent?: OperationParent, options?: CommandOperationOptions) {
87-
super(options);
88-
this.options = options ?? {};
89-
90-
// NOTE: this was explicitly added for the add/remove user operations, it's likely
91-
// something we'd want to reconsider. Perhaps those commands can use `Admin`
92-
// as a parent?
93-
const dbNameOverride = options?.dbName || options?.authdb;
94-
if (dbNameOverride) {
95-
this.ns = new MongoDBNamespace(dbNameOverride, '$cmd');
96-
} else {
97-
this.ns = parent
98-
? parent.s.namespace.withCollection('$cmd')
99-
: new MongoDBNamespace('admin', '$cmd');
100-
}
101-
102-
this.readConcern = ReadConcern.fromOptions(options);
103-
this.writeConcern = WriteConcern.fromOptions(options);
104-
105-
if (this.hasAspect(Aspect.EXPLAINABLE)) {
106-
this.explain = Explain.fromOptions(options);
107-
if (this.explain) validateExplainTimeoutOptions(this.options, this.explain);
108-
} else if (options?.explain != null) {
109-
throw new MongoInvalidArgumentError(`Option "explain" is not supported on this command`);
110-
}
111-
}
112-
113-
override get canRetryWrite(): boolean {
114-
if (this.hasAspect(Aspect.EXPLAINABLE)) {
115-
return this.explain == null;
116-
}
117-
return super.canRetryWrite;
118-
}
119-
120-
public async executeCommand<T extends MongoDBResponseConstructor>(
121-
server: Server,
122-
session: ClientSession | undefined,
123-
cmd: Document,
124-
timeoutContext: TimeoutContext,
125-
responseType: T | undefined
126-
): Promise<typeof responseType extends undefined ? Document : InstanceType<T>>;
127-
128-
public async executeCommand(
129-
server: Server,
130-
session: ClientSession | undefined,
131-
cmd: Document,
132-
timeoutContext: TimeoutContext
133-
): Promise<Document>;
134-
135-
async executeCommand(
136-
server: Server,
137-
session: ClientSession | undefined,
138-
cmd: Document,
139-
timeoutContext: TimeoutContext,
140-
responseType?: MongoDBResponseConstructor
141-
): Promise<Document> {
142-
this.server = server;
143-
144-
const options = {
145-
...this.options,
146-
...this.bsonOptions,
147-
timeoutContext,
148-
readPreference: this.readPreference,
149-
session
150-
};
151-
152-
const inTransaction = this.session && this.session.inTransaction();
153-
154-
if (this.readConcern && commandSupportsReadConcern(cmd) && !inTransaction) {
155-
Object.assign(cmd, { readConcern: this.readConcern });
156-
}
157-
158-
if (this.writeConcern && this.hasAspect(Aspect.WRITE_OPERATION) && !inTransaction) {
159-
WriteConcern.apply(cmd, this.writeConcern);
160-
}
161-
162-
if (
163-
options.collation &&
164-
typeof options.collation === 'object' &&
165-
!this.hasAspect(Aspect.SKIP_COLLATION)
166-
) {
167-
Object.assign(cmd, { collation: options.collation });
168-
}
169-
170-
if (typeof options.maxTimeMS === 'number') {
171-
cmd.maxTimeMS = options.maxTimeMS;
172-
}
173-
174-
if (this.hasAspect(Aspect.EXPLAINABLE) && this.explain) {
175-
cmd = decorateWithExplain(cmd, this.explain);
176-
}
177-
178-
return await server.command(this.ns, cmd, options, responseType);
179-
}
180-
}
181-
182-
/** @internal */
183-
export abstract class ModernizedCommandOperation<T> extends ModernizedOperation<T> {
80+
export abstract class CommandOperation<T> extends ModernizedOperation<T> {
18481
override options: CommandOperationOptions;
18582
readConcern?: ReadConcern;
18683
writeConcern?: WriteConcern;

src/operations/count.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { MongoDBResponse } from '../cmap/wire_protocol/responses';
44
import type { Collection } from '../collection';
55
import type { ClientSession } from '../sessions';
66
import type { MongoDBNamespace } from '../utils';
7-
import { type CommandOperationOptions, ModernizedCommandOperation } from './command';
7+
import { type CommandOperationOptions, CommandOperation } from './command';
88
import { Aspect, defineAspects } from './operation';
99

1010
/** @public */
@@ -22,7 +22,7 @@ export interface CountOptions extends CommandOperationOptions {
2222
}
2323

2424
/** @internal */
25-
export class CountOperation extends ModernizedCommandOperation<number> {
25+
export class CountOperation extends CommandOperation<number> {
2626
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
2727
override options: CountOptions;
2828
collectionName?: string;

src/operations/create_collection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type { PkFactory } from '../mongo_client';
1212
import type { ClientSession } from '../sessions';
1313
import { TimeoutContext } from '../timeout';
1414
import { maxWireVersion } from '../utils';
15-
import { type CommandOperationOptions, ModernizedCommandOperation } from './command';
15+
import { type CommandOperationOptions, CommandOperation } from './command';
1616
import { executeOperation } from './execute_operation';
1717
import { CreateIndexesOperation } from './indexes';
1818
import { Aspect, defineAspects } from './operation';
@@ -112,7 +112,7 @@ const INVALID_QE_VERSION =
112112
'Driver support of Queryable Encryption is incompatible with server. Upgrade server to use Queryable Encryption.';
113113

114114
/** @internal */
115-
export class CreateCollectionOperation extends ModernizedCommandOperation<Collection> {
115+
export class CreateCollectionOperation extends CommandOperation<Collection> {
116116
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
117117
override options: CreateCollectionOptions;
118118
db: Db;

src/operations/delete.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { type WriteConcernOptions } from '../write_concern';
88
import {
99
type CollationOptions,
1010
type CommandOperationOptions,
11-
ModernizedCommandOperation
11+
CommandOperation
1212
} from './command';
1313
import { Aspect, defineAspects, type Hint } from './operation';
1414

@@ -45,7 +45,7 @@ export interface DeleteStatement {
4545
}
4646

4747
/** @internal */
48-
export class DeleteOperation extends ModernizedCommandOperation<Document> {
48+
export class DeleteOperation extends CommandOperation<Document> {
4949
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
5050
override options: DeleteOptions;
5151
statements: DeleteStatement[];

src/operations/distinct.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { type Document } from '../bson';
22
import { type Connection } from '../cmap/connection';
33
import { MongoDBResponse } from '../cmap/wire_protocol/responses';
44
import type { Collection } from '../collection';
5-
import { type CommandOperationOptions, ModernizedCommandOperation } from './command';
5+
import { type CommandOperationOptions, CommandOperation } from './command';
66
import { Aspect, defineAspects } from './operation';
77

88
/** @public */
@@ -25,7 +25,7 @@ export type DistinctOptions = CommandOperationOptions & {
2525
* Return a list of distinct values for the given key across a collection.
2626
* @internal
2727
*/
28-
export class DistinctOperation extends ModernizedCommandOperation<any[] | Document> {
28+
export class DistinctOperation extends CommandOperation<any[] | Document> {
2929
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
3030
override options: DistinctOptions;
3131
collection: Collection;

src/operations/drop.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { Db } from '../db';
66
import { MONGODB_ERROR_CODES } from '../error';
77
import type { ClientSession } from '../sessions';
88
import { TimeoutContext } from '../timeout';
9-
import { type CommandOperationOptions, ModernizedCommandOperation } from './command';
9+
import { type CommandOperationOptions, CommandOperation } from './command';
1010
import { executeOperation } from './execute_operation';
1111
import { Aspect, defineAspects } from './operation';
1212

@@ -17,7 +17,7 @@ export interface DropCollectionOptions extends CommandOperationOptions {
1717
}
1818

1919
/** @internal */
20-
export class DropCollectionOperation extends ModernizedCommandOperation<boolean> {
20+
export class DropCollectionOperation extends CommandOperation<boolean> {
2121
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
2222

2323
override options: DropCollectionOptions;
@@ -107,7 +107,7 @@ export async function dropCollections(
107107
export type DropDatabaseOptions = CommandOperationOptions;
108108

109109
/** @internal */
110-
export class DropDatabaseOperation extends ModernizedCommandOperation<boolean> {
110+
export class DropDatabaseOperation extends CommandOperation<boolean> {
111111
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
112112
override options: DropDatabaseOptions;
113113

src/operations/estimated_document_count.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Document } from '../bson';
33
import { MongoDBResponse } from '../cmap/wire_protocol/responses';
44
import type { Collection } from '../collection';
55
import type { ClientSession } from '../sessions';
6-
import { type CommandOperationOptions, ModernizedCommandOperation } from './command';
6+
import { type CommandOperationOptions, CommandOperation } from './command';
77
import { Aspect, defineAspects } from './operation';
88

99
/** @public */
@@ -17,7 +17,7 @@ export interface EstimatedDocumentCountOptions extends CommandOperationOptions {
1717
}
1818

1919
/** @internal */
20-
export class EstimatedDocumentCountOperation extends ModernizedCommandOperation<number> {
20+
export class EstimatedDocumentCountOperation extends CommandOperation<number> {
2121
override SERVER_COMMAND_RESPONSE_TYPE = MongoDBResponse;
2222
override options: EstimatedDocumentCountOptions;
2323
collectionName: string;

0 commit comments

Comments
 (0)