Skip to content

Commit 4bc33fd

Browse files
committed
remove options type from CommandOperation
1 parent 3bcd393 commit 4bc33fd

28 files changed

+122
-63
lines changed

src/operations/add_user.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export interface AddUserOptions extends CommandOperationOptions {
1818
}
1919

2020
/** @internal */
21-
export class AddUserOperation extends CommandOperation<AddUserOptions, Document> {
21+
export class AddUserOperation extends CommandOperation<Document> {
22+
options: AddUserOptions;
2223
db: Db;
2324
username: string;
2425
password?: string;
@@ -35,6 +36,7 @@ export class AddUserOperation extends CommandOperation<AddUserOptions, Document>
3536
this.db = db;
3637
this.username = username;
3738
this.password = password;
39+
this.options = options || {};
3840
}
3941

4042
execute(server: Server, callback: Callback<Document>): void {

src/operations/aggregate.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ export interface AggregateOptions extends CommandOperationOptions {
3434
}
3535

3636
/** @internal */
37-
export class AggregateOperation<T = Document> extends CommandOperation<AggregateOptions, T> {
37+
export class AggregateOperation<T = Document> extends CommandOperation<T> {
38+
options: AggregateOptions;
3839
target: string | typeof DB_AGGREGATE_COLLECTION;
3940
pipeline: Document[];
4041
hasWriteStage: boolean;
4142

4243
constructor(parent: OperationParent, pipeline: Document[], options?: AggregateOptions) {
4344
super(parent, options);
4445

46+
this.options = options || {};
4547
this.target =
4648
parent.s.namespace && parent.s.namespace.collection
4749
? parent.s.namespace.collection

src/operations/command.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,18 @@ export interface OperationParent {
4848
}
4949

5050
/** @internal */
51-
export abstract class CommandOperation<
52-
T extends CommandOperationOptions = CommandOperationOptions,
53-
TResult = Document
54-
> extends OperationBase<T> {
51+
export abstract class CommandOperation<TResult = Document> extends OperationBase {
52+
options: CommandOperationOptions;
5553
ns: MongoDBNamespace;
5654
readConcern?: ReadConcern;
5755
writeConcern?: WriteConcern;
5856
explain?: Explain;
5957
fullResponse?: boolean;
6058
logger?: Logger;
6159

62-
constructor(parent?: OperationParent, options?: T) {
60+
constructor(parent?: OperationParent, options?: CommandOperationOptions) {
6361
super(options);
62+
this.options = options || {};
6463

6564
// NOTE: this was explicitly added for the add/remove user operations, it's likely
6665
// something we'd want to reconsider. Perhaps those commands can use `Admin`
@@ -104,7 +103,7 @@ export abstract class CommandOperation<
104103
// TODO: consider making this a non-enumerable property
105104
this.server = server;
106105

107-
const options = { ...this.options, ...this.bsonOptions };
106+
const options = { ...this.options, ...this.bsonOptions, readPreference: this.readPreference };
108107
const serverWireVersion = maxWireVersion(server);
109108
const inTransaction = this.session && this.session.inTransaction();
110109

@@ -155,7 +154,7 @@ export abstract class CommandOperation<
155154
server.command(
156155
this.ns.toString(),
157156
cmd,
158-
{ fullResult: !!this.fullResponse, ...this.options },
157+
{ fullResult: !!this.fullResponse, ...options },
159158
callback
160159
);
161160
}

src/operations/count.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ export interface CountOptions extends CommandOperationOptions {
1818
}
1919

2020
/** @internal */
21-
export class CountOperation extends CommandOperation<CountOptions, number> {
21+
export class CountOperation extends CommandOperation<number> {
22+
options: CountOptions;
2223
collectionName?: string;
2324
query: Document;
2425

2526
constructor(namespace: MongoDBNamespace, filter: Document, options: CountOptions) {
2627
super(({ s: { namespace: namespace } } as unknown) as Collection, options);
2728

29+
this.options = options;
2830
this.collectionName = namespace.collection;
2931
this.query = filter;
3032
}

src/operations/create_collection.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ export interface CreateCollectionOptions extends CommandOperationOptions {
6464
}
6565

6666
/** @internal */
67-
export class CreateCollectionOperation extends CommandOperation<
68-
CreateCollectionOptions,
69-
Collection
70-
> {
67+
export class CreateCollectionOperation extends CommandOperation<Collection> {
68+
options: CreateCollectionOptions;
7169
db: Db;
7270
name: string;
7371

7472
constructor(db: Db, name: string, options: CreateCollectionOptions = {}) {
7573
super(db, options);
74+
75+
this.options = options;
7676
this.db = db;
7777
this.name = name;
7878
}

src/operations/delete.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@ export class DeleteOperation extends OperationBase<DeleteOptions, Document> {
5151
}
5252
}
5353

54-
export class DeleteOneOperation extends CommandOperation<DeleteOptions, DeleteResult> {
54+
export class DeleteOneOperation extends CommandOperation<DeleteResult> {
55+
options: DeleteOptions;
5556
collection: Collection;
5657
filter: Document;
5758

5859
constructor(collection: Collection, filter: Document, options: DeleteOptions) {
5960
super(collection, options);
6061

62+
this.options = options;
6163
this.collection = collection;
6264
this.filter = filter;
6365
}
@@ -81,7 +83,8 @@ export class DeleteOneOperation extends CommandOperation<DeleteOptions, DeleteRe
8183
}
8284
}
8385

84-
export class DeleteManyOperation extends CommandOperation<DeleteOptions, DeleteResult> {
86+
export class DeleteManyOperation extends CommandOperation<DeleteResult> {
87+
options: DeleteOptions;
8588
collection: Collection;
8689
filter: Document;
8790

@@ -92,6 +95,7 @@ export class DeleteManyOperation extends CommandOperation<DeleteOptions, DeleteR
9295
throw new TypeError('filter is a required parameter');
9396
}
9497

98+
this.options = options;
9599
this.collection = collection;
96100
this.filter = filter;
97101
}

src/operations/distinct.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export type DistinctOptions = CommandOperationOptions;
1313
* Return a list of distinct values for the given key across a collection.
1414
* @internal
1515
*/
16-
export class DistinctOperation extends CommandOperation<DistinctOptions, Document[]> {
16+
export class DistinctOperation extends CommandOperation<Document[]> {
17+
options: DistinctOptions;
1718
collection: Collection;
1819
/** Field of the document to find distinct values for. */
1920
key: string;
@@ -31,6 +32,7 @@ export class DistinctOperation extends CommandOperation<DistinctOptions, Documen
3132
constructor(collection: Collection, key: string, query: Document, options?: DistinctOptions) {
3233
super(collection, options);
3334

35+
this.options = options || {};
3436
this.collection = collection;
3537
this.key = key;
3638
this.query = query;

src/operations/drop.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import type { Db } from '../db';
88
export type DropCollectionOptions = CommandOperationOptions;
99

1010
/** @internal */
11-
export class DropCollectionOperation extends CommandOperation<DropCollectionOptions, boolean> {
11+
export class DropCollectionOperation extends CommandOperation<boolean> {
12+
options: DropCollectionOptions;
1213
name: string;
1314

1415
constructor(db: Db, name: string, options: DropCollectionOptions) {
1516
super(db, options);
17+
this.options = options;
1618
this.name = name;
1719
}
1820

@@ -29,7 +31,13 @@ export class DropCollectionOperation extends CommandOperation<DropCollectionOpti
2931
export type DropDatabaseOptions = CommandOperationOptions;
3032

3133
/** @internal */
32-
export class DropDatabaseOperation extends CommandOperation<DropDatabaseOptions, boolean> {
34+
export class DropDatabaseOperation extends CommandOperation<boolean> {
35+
options: DropDatabaseOptions;
36+
37+
constructor(db: Db, options: DropDatabaseOptions) {
38+
super(db, options);
39+
this.options = options;
40+
}
3341
execute(server: Server, callback: Callback<boolean>): void {
3442
super.executeCommand(server, { dropDatabase: 1 }, (err, result) => {
3543
if (err) return callback(err);

src/operations/estimated_document_count.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ export interface EstimatedDocumentCountOptions extends CommandOperationOptions {
1313
}
1414

1515
/** @internal */
16-
export class EstimatedDocumentCountOperation extends CommandOperation<
17-
EstimatedDocumentCountOptions,
18-
number
19-
> {
16+
export class EstimatedDocumentCountOperation extends CommandOperation<number> {
17+
options: EstimatedDocumentCountOptions;
2018
collectionName: string;
2119
query?: Document;
2220

@@ -33,6 +31,7 @@ export class EstimatedDocumentCountOperation extends CommandOperation<
3331
}
3432

3533
super(collection, options);
34+
this.options = options;
3635
this.collectionName = collection.collectionName;
3736
if (query) {
3837
this.query = query;

src/operations/eval.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export interface EvalOptions extends CommandOperationOptions {
1313
}
1414

1515
/** @internal */
16-
export class EvalOperation extends CommandOperation<EvalOptions, Document> {
16+
export class EvalOperation extends CommandOperation<Document> {
17+
options: EvalOptions;
1718
code: Code;
1819
parameters?: Document | Document[];
1920

@@ -25,6 +26,7 @@ export class EvalOperation extends CommandOperation<EvalOptions, Document> {
2526
) {
2627
super(db, options);
2728

29+
this.options = options || {};
2830
this.code = code;
2931
this.parameters = parameters;
3032
// force primary read preference

src/operations/find.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ export interface FindOptions extends CommandOperationOptions {
6565
const SUPPORTS_WRITE_CONCERN_AND_COLLATION = 5;
6666

6767
/** @internal */
68-
export class FindOperation extends CommandOperation<FindOptions, Document> {
68+
export class FindOperation extends CommandOperation<Document> {
69+
options: FindOptions;
6970
filter: Document;
7071

7172
constructor(
@@ -75,6 +76,8 @@ export class FindOperation extends CommandOperation<FindOptions, Document> {
7576
options: FindOptions = {}
7677
) {
7778
super(collection, options);
79+
80+
this.options = options;
7881
this.ns = ns;
7982

8083
if (typeof filter !== 'object' || Array.isArray(filter)) {

src/operations/find_and_modify.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ export interface FindAndModifyOptions extends CommandOperationOptions {
4040
}
4141

4242
/** @internal */
43-
export class FindAndModifyOperation extends CommandOperation<FindAndModifyOptions, Document> {
43+
export class FindAndModifyOperation extends CommandOperation<Document> {
44+
options: FindAndModifyOptions;
4445
collection: Collection;
4546
query: Document;
4647
sort?: Sort;
@@ -54,6 +55,7 @@ export class FindAndModifyOperation extends CommandOperation<FindAndModifyOption
5455
options?: FindAndModifyOptions
5556
) {
5657
super(collection, options);
58+
this.options = options || {};
5759

5860
// force primary read preference
5961
this.readPreference = ReadPreference.primary;

src/operations/find_one.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import { CommandOperation } from './command';
88
import { Aspect, defineAspects } from './operation';
99

1010
/** @internal */
11-
export class FindOneOperation extends CommandOperation<FindOptions, Document> {
11+
export class FindOneOperation extends CommandOperation<Document> {
12+
options: FindOptions;
1213
collection: Collection;
1314
query: Document;
1415

1516
constructor(collection: Collection, query: Document, options: FindOptions) {
1617
super(collection, options);
1718

19+
this.options = options;
1820
this.collection = collection;
1921
this.query = query;
2022
}

src/operations/indexes.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ export class IndexesOperation extends OperationBase<IndexInformationOptions, Doc
144144
}
145145

146146
/** @internal */
147-
export class CreateIndexesOperation extends CommandOperation<CreateIndexesOptions, Document> {
147+
export class CreateIndexesOperation extends CommandOperation<Document> {
148+
options: CreateIndexesOptions;
148149
collectionName: string;
149150
onlyReturnNameOfCreatedIndex?: boolean;
150151
indexes: IndexDescription[];
@@ -156,6 +157,8 @@ export class CreateIndexesOperation extends CommandOperation<CreateIndexesOption
156157
options?: CreateIndexesOptions
157158
) {
158159
super(parent, options);
160+
161+
this.options = options || {};
159162
this.collectionName = collectionName;
160163

161164
this.indexes = indexes;
@@ -283,12 +286,15 @@ export class EnsureIndexOperation extends CreateIndexOperation {
283286
export type DropIndexesOptions = CommandOperationOptions;
284287

285288
/** @internal */
286-
export class DropIndexOperation extends CommandOperation<DropIndexesOptions, Document> {
289+
export class DropIndexOperation extends CommandOperation<Document> {
290+
options: DropIndexesOptions;
287291
collection: Collection;
288292
indexName: string;
289293

290294
constructor(collection: Collection, indexName: string, options?: DropIndexesOptions) {
291295
super(collection, options);
296+
297+
this.options = options || {};
292298
this.collection = collection;
293299
this.indexName = indexName;
294300
}
@@ -324,12 +330,14 @@ export interface ListIndexesOptions extends CommandOperationOptions {
324330
}
325331

326332
/** @internal */
327-
export class ListIndexesOperation extends CommandOperation<ListIndexesOptions, Document> {
333+
export class ListIndexesOperation extends CommandOperation<Document> {
334+
options: ListIndexesOptions;
328335
collectionNamespace: MongoDBNamespace;
329336

330337
constructor(collection: Collection, options?: ListIndexesOptions) {
331338
super(collection, options);
332339

340+
this.options = options || {};
333341
this.collectionNamespace = collection.s.namespace;
334342
}
335343

src/operations/insert.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@ export interface InsertOneResult {
5151
result: Document;
5252
}
5353

54-
export class InsertOneOperation extends CommandOperation<InsertOneOptions, InsertOneResult> {
54+
export class InsertOneOperation extends CommandOperation<InsertOneResult> {
55+
options: InsertOneOptions;
5556
collection: Collection;
5657
doc: Document;
5758

5859
constructor(collection: Collection, doc: Document, options: InsertOneOptions) {
5960
super(collection, options);
6061

62+
this.options = options;
6163
this.collection = collection;
6264
this.doc = doc;
6365
}

src/operations/list_collections.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ export interface ListCollectionsOptions extends CommandOperationOptions {
2020
}
2121

2222
/** @internal */
23-
export class ListCollectionsOperation extends CommandOperation<ListCollectionsOptions, string[]> {
23+
export class ListCollectionsOperation extends CommandOperation<string[]> {
24+
options: ListCollectionsOptions;
2425
db: Db;
2526
filter: Document;
2627
nameOnly: boolean;
@@ -29,6 +30,7 @@ export class ListCollectionsOperation extends CommandOperation<ListCollectionsOp
2930
constructor(db: Db, filter: Document, options?: ListCollectionsOptions) {
3031
super(db, options);
3132

33+
this.options = options || {};
3234
this.db = db;
3335
this.filter = filter;
3436
this.nameOnly = !!this.options.nameOnly;

src/operations/list_databases.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export interface ListDatabasesOptions extends CommandOperationOptions {
1919
}
2020

2121
/** @internal */
22-
export class ListDatabasesOperation extends CommandOperation<
23-
ListDatabasesOptions,
24-
ListDatabasesResult
25-
> {
22+
export class ListDatabasesOperation extends CommandOperation<ListDatabasesResult> {
23+
options: ListDatabasesOptions;
24+
2625
constructor(db: Db, options?: ListDatabasesOptions) {
2726
super(db, options);
27+
this.options = options || {};
2828
this.ns = new MongoDBNamespace('admin', '$cmd');
2929
}
3030

0 commit comments

Comments
 (0)