Skip to content

Encapsulate operations used by MongoDatabase #1028

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateIndexOptions;
import com.mongodb.client.model.CreateViewOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.DropCollectionOptions;
import com.mongodb.client.model.DropIndexOptions;
Expand Down Expand Up @@ -237,6 +239,19 @@ public AsyncWriteOperation<BulkWriteResult> bulkWrite(final List<? extends Write
return operations.bulkWrite(requests, options);
}

public <TResult> AsyncReadOperation<TResult> commandRead(final Bson command, final Class<TResult> resultClass) {
return operations.commandRead(command, resultClass);
}

public AsyncWriteOperation<Void> dropDatabase() {
return operations.dropDatabase();
}

public AsyncWriteOperation<Void> createCollection(final String collectionName, final CreateCollectionOptions createCollectionOptions,
final AutoEncryptionSettings autoEncryptionSettings) {
return operations.createCollection(collectionName, createCollectionOptions, autoEncryptionSettings);
}


public AsyncWriteOperation<Void> dropCollection(final DropCollectionOptions dropCollectionOptions,
final AutoEncryptionSettings autoEncryptionSettings) {
Expand All @@ -248,6 +263,11 @@ public AsyncWriteOperation<Void> renameCollection(final MongoNamespace newCollec
return operations.renameCollection(newCollectionNamespace, options);
}

public AsyncWriteOperation<Void> createView(final String viewName, final String viewOn, final List<? extends Bson> pipeline,
final CreateViewOptions createViewOptions) {
return operations.createView(viewName, viewOn, pipeline, createViewOptions);
}

public AsyncWriteOperation<Void> createIndexes(final List<IndexModel> indexes, final CreateIndexOptions options) {
return operations.createIndexes(indexes, options);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@
import com.mongodb.ReadPreference;
import com.mongodb.WriteConcern;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.ClusteredIndexOptions;
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateIndexOptions;
import com.mongodb.client.model.CreateViewOptions;
import com.mongodb.client.model.DeleteManyModel;
import com.mongodb.client.model.DeleteOneModel;
import com.mongodb.client.model.DeleteOptions;
Expand All @@ -35,6 +38,7 @@
import com.mongodb.client.model.FindOneAndReplaceOptions;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.IndexModel;
import com.mongodb.client.model.IndexOptionDefaults;
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.InsertOneOptions;
Expand All @@ -45,6 +49,7 @@
import com.mongodb.client.model.UpdateManyModel;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.model.UpdateOptions;
import com.mongodb.client.model.ValidationOptions;
import com.mongodb.client.model.WriteModel;
import com.mongodb.client.model.changestream.FullDocument;
import com.mongodb.client.model.changestream.FullDocumentBeforeChange;
Expand Down Expand Up @@ -509,6 +514,64 @@ MixedBulkWriteOperation bulkWrite(final List<? extends WriteModel<? extends TDoc
.let(toBsonDocument(options.getLet()));
}

<TResult> CommandReadOperation<TResult> commandRead(final Bson command, final Class<TResult> resultClass) {
notNull("command", command);
notNull("resultClass", resultClass);
return new CommandReadOperation<TResult>(namespace.getDatabaseName(), toBsonDocument(command), codecRegistry.get(resultClass));
}


DropDatabaseOperation dropDatabase() {
return new DropDatabaseOperation(namespace.getDatabaseName(), getWriteConcern());
}


CreateCollectionOperation createCollection(final String collectionName, final CreateCollectionOptions createCollectionOptions,
final AutoEncryptionSettings autoEncryptionSettings) {
CreateCollectionOperation operation = new CreateCollectionOperation(namespace.getDatabaseName(), collectionName, writeConcern)
.collation(createCollectionOptions.getCollation())
.capped(createCollectionOptions.isCapped())
.sizeInBytes(createCollectionOptions.getSizeInBytes())
.maxDocuments(createCollectionOptions.getMaxDocuments())
.storageEngineOptions(toBsonDocument(createCollectionOptions.getStorageEngineOptions()))
.expireAfter(createCollectionOptions.getExpireAfter(TimeUnit.SECONDS))
.timeSeriesOptions(createCollectionOptions.getTimeSeriesOptions())
.changeStreamPreAndPostImagesOptions(createCollectionOptions.getChangeStreamPreAndPostImagesOptions());

ClusteredIndexOptions clusteredIndexOptions = createCollectionOptions.getClusteredIndexOptions();
if (clusteredIndexOptions != null) {
operation.clusteredIndexKey(toBsonDocument(clusteredIndexOptions.getKey()));
operation.clusteredIndexUnique(clusteredIndexOptions.isUnique());
operation.clusteredIndexName(clusteredIndexOptions.getName());
}

Bson encryptedFields = createCollectionOptions.getEncryptedFields();
operation.encryptedFields(toBsonDocument(encryptedFields));
if (encryptedFields == null && autoEncryptionSettings != null) {
Map<String, BsonDocument> encryptedFieldsMap = autoEncryptionSettings.getEncryptedFieldsMap();
if (encryptedFieldsMap != null) {
operation.encryptedFields(encryptedFieldsMap.getOrDefault(namespace.getDatabaseName() + "." + collectionName, null));
}
}

IndexOptionDefaults indexOptionDefaults = createCollectionOptions.getIndexOptionDefaults();
Bson storageEngine = indexOptionDefaults.getStorageEngine();
if (storageEngine != null) {
operation.indexOptionDefaults(new BsonDocument("storageEngine", toBsonDocument(storageEngine)));
}
ValidationOptions validationOptions = createCollectionOptions.getValidationOptions();
Bson validator = validationOptions.getValidator();
if (validator != null) {
operation.validator(toBsonDocument(validator));
}
if (validationOptions.getValidationLevel() != null) {
operation.validationLevel(validationOptions.getValidationLevel());
}
if (validationOptions.getValidationAction() != null) {
operation.validationAction(validationOptions.getValidationAction());
}
return operation;
}

DropCollectionOperation dropCollection(
final DropCollectionOptions dropCollectionOptions,
Expand All @@ -534,6 +597,13 @@ RenameCollectionOperation renameCollection(final MongoNamespace newCollectionNam
.dropTarget(renameCollectionOptions.isDropTarget());
}

CreateViewOperation createView(final String viewName, final String viewOn, final List<? extends Bson> pipeline,
final CreateViewOptions createViewOptions) {
notNull("options", createViewOptions);
return new CreateViewOperation(namespace.getDatabaseName(), viewName, viewOn, toBsonDocumentList(pipeline), writeConcern)
.collation(createViewOptions.getCollation());
}

@SuppressWarnings("deprecation")
CreateIndexesOperation createIndexes(final List<IndexModel> indexes, final CreateIndexOptions createIndexOptions) {
notNull("indexes", indexes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.Collation;
import com.mongodb.client.model.CountOptions;
import com.mongodb.client.model.CreateCollectionOptions;
import com.mongodb.client.model.CreateIndexOptions;
import com.mongodb.client.model.CreateViewOptions;
import com.mongodb.client.model.DeleteOptions;
import com.mongodb.client.model.DropCollectionOptions;
import com.mongodb.client.model.DropIndexOptions;
Expand Down Expand Up @@ -209,23 +211,39 @@ public WriteOperation<BulkWriteResult> insertMany(final List<? extends TDocument
return operations.insertMany(documents, options);
}

@SuppressWarnings("unchecked")
public WriteOperation<BulkWriteResult> bulkWrite(final List<? extends WriteModel<? extends TDocument>> requests,
final BulkWriteOptions options) {
return operations.bulkWrite(requests, options);
}

public <TResult> ReadOperation<TResult> commandRead(final Bson command, final Class<TResult> resultClass) {
return operations.commandRead(command, resultClass);
}

public WriteOperation<Void> dropDatabase() {
return operations.dropDatabase();
}


public WriteOperation<Void> createCollection(final String collectionName, final CreateCollectionOptions createCollectionOptions,
final AutoEncryptionSettings autoEncryptionSettings) {
return operations.createCollection(collectionName, createCollectionOptions, autoEncryptionSettings);
}

public WriteOperation<Void> dropCollection(final DropCollectionOptions dropCollectionOptions,
final AutoEncryptionSettings autoEncryptionSettings) {
return operations.dropCollection(dropCollectionOptions, autoEncryptionSettings);
}

public WriteOperation<Void> renameCollection(final MongoNamespace newCollectionNamespace,
final RenameCollectionOptions options) {
public WriteOperation<Void> renameCollection(final MongoNamespace newCollectionNamespace, final RenameCollectionOptions options) {
return operations.renameCollection(newCollectionNamespace, options);
}

public WriteOperation<Void> createView(final String viewName, final String viewOn, final List<? extends Bson> pipeline,
final CreateViewOptions createViewOptions) {
return operations.createView(viewName, viewOn, pipeline, createViewOptions);
}

public WriteOperation<Void> createIndexes(final List<IndexModel> indexes, final CreateIndexOptions options) {
return operations.createIndexes(indexes, options);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,7 @@ public Publisher<Void> createCollection(final String collectionName) {
@Override
public Publisher<Void> createCollection(final String collectionName, final CreateCollectionOptions options) {
return mongoOperationPublisher.createCollection(null,
new MongoNamespace(getName(), notNull("collectionName", collectionName)),
notNull("options", options));
notNull("collectionName", collectionName), notNull("options", options));
}

@Override
Expand All @@ -221,8 +220,7 @@ public Publisher<Void> createCollection(final ClientSession clientSession, final
public Publisher<Void> createCollection(final ClientSession clientSession, final String collectionName,
final CreateCollectionOptions options) {
return mongoOperationPublisher.createCollection(notNull("clientSession", clientSession),
new MongoNamespace(getName(), notNull("collectionName", collectionName)),
notNull("options", options));
notNull("collectionName", collectionName), notNull("options", options));
}

@Override
Expand Down
Loading