Browse Source

hacking

issue/5087
Christoph Strobl 4 days ago
parent
commit
bfba47b60b
No known key found for this signature in database
GPG Key ID: E6054036D0C37A4B
  1. 57
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/NamespaceBulkOperations.java
  2. 56
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultBulkOperationsIntegrationTests.java

57
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/NamespaceBulkOperations.java

@ -36,6 +36,7 @@ import java.util.List; @@ -36,6 +36,7 @@ import java.util.List;
import com.mongodb.bulk.BulkWriteResult;
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.core.query.UpdateDefinition;
/**
@ -44,31 +45,47 @@ import org.springframework.data.mongodb.core.query.UpdateDefinition; @@ -44,31 +45,47 @@ import org.springframework.data.mongodb.core.query.UpdateDefinition;
*/
public interface NamespaceBulkOperations {
NamespacedBulkOperations<Object> inNamespace(Namespace namespace);
<T> NamespacedBulkOperations<T> inNamespace(Class<T> type);
NamespaceAwareBulkIOperations inCollection(Class<?> type);
NamespaceAwareBulkIOperations inCollection(String collection);
NamespaceBulkOperations switchDatabase(String databaseName);
interface NamespacedBulkOperations<T> {
NamespacedBulkInsertOperations<T> insert();
NamespacedBulkUpdateOperations<T> update();
NamespacedBulkDeleteOperations<T> delete();
NamespacedBulkOperations<Object> inNamespace(Namespace namespace);
<S> NamespacedBulkOperations<S> inNamespace(Class<S> type);
interface NamespaceAwareBulkIOperations extends BulkOperations, NamespaceBulkOperations {
BulkWriteResult execute();
}
NamespaceAwareBulkIOperations insert(List<? extends Object> documents);
interface NamespacedBulkInsertOperations<T> extends NamespacedBulkOperations<T> {
NamespacedBulkInsertOperations<T> one(T object);
NamespacedBulkInsertOperations<T> many(List<T> object);
@Override
default NamespaceAwareBulkIOperations upsert(Query query, Update update) {
upsert(query, (UpdateDefinition) update);
return this;
}
}
interface NamespacedBulkUpdateOperations<T> extends NamespacedBulkOperations<T> {
NamespacedBulkUpdateOperations<T> one(Query query, UpdateDefinition update);
NamespacedBulkUpdateOperations<T> one(CriteriaDefinition where, UpdateDefinition update);
}
interface NamespacedBulkDeleteOperations <T>{
NamespacedBulkDeleteOperations<T> delete(Query query);
}
// NamespacedBulkOperations<Object> inNamespace(Namespace namespace);
// <T> NamespacedBulkOperations<T> inNamespace(Class<T> type);
//
// interface NamespacedBulkOperations<T> {
// NamespacedBulkInsertOperations<T> insert();
// NamespacedBulkUpdateOperations<T> update();
// NamespacedBulkDeleteOperations<T> delete();
// NamespacedBulkOperations<Object> inNamespace(Namespace namespace);
// <S> NamespacedBulkOperations<S> inNamespace(Class<S> type);
//
// BulkWriteResult execute();
// }
//
// interface NamespacedBulkInsertOperations<T> extends NamespacedBulkOperations<T> {
// NamespacedBulkInsertOperations<T> one(T object);
// NamespacedBulkInsertOperations<T> many(List<T> object);
// }
//
// interface NamespacedBulkUpdateOperations<T> extends NamespacedBulkOperations<T> {
// NamespacedBulkUpdateOperations<T> one(Query query, UpdateDefinition update);
// NamespacedBulkUpdateOperations<T> one(CriteriaDefinition where, UpdateDefinition update);
// }
// interface NamespacedBulkDeleteOperations <T>{
// NamespacedBulkDeleteOperations<T> delete(Query query);
// }
}

56
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/DefaultBulkOperationsIntegrationTests.java

@ -377,25 +377,47 @@ public class DefaultBulkOperationsIntegrationTests { @@ -377,25 +377,47 @@ public class DefaultBulkOperationsIntegrationTests {
@Test // GH-5087
void hackItOn() {
NamespaceBulkOperations bulkOps = operations.bulkOps(BulkMode.ORDERED);
bulkOps
.inNamespace(namespace("person"))
.update()
.one(Criteria.where("name").is("batman"), null)
.one(Criteria.where("name").is("joker"), null)
.insert()
.many(List.of(new Person()))
.inNamespace(namespace("log"))
.insert()
.one(new User())
.inNamespace(Score.class)
.insert().many(List.of())
.execute();
.inCollection(User.class)
.insert(List.of(new User()))
.upsert(Query.query(Criteria.where("name").is("batman")), new Update().set("actor", "..."))
.switchDatabase("db2")
.inCollection("sql")
.insert(List.of(new Document()));
//
// NamespaceBulkOperations bulkOps = operations.bulkOps(BulkMode.ORDERED);
// bulkOps
// .inNamespace(namespace("person"))
// .update()
// .one(Criteria.where("name").is("batman"), null)
// .one(Criteria.where("name").is("joker"), null)
// .insert()
// .many(List.of(new Person()))
// .inNamespace(namespace("log"))
// .insert()
// .one(new User())
// .inNamespace(Score.class)
// .insert().many(List.of())
//
// .execute();
// NamespaceBulkOps bulkOps1 = null;
// bulkOps1.inNamespace(namespace("person"))
// .andInNamespace(namespace("log"));
}
// interface NamespaceBulkOps {
// NamespaceBoundBulkOps inNamespace(Namespace namespace);
// CollectionBound
// }
interface NamespaceBoundBulkOps extends BulkOperations {
NamespaceBoundBulkOps andInNamespace(Namespace namespace);
}
@Test // GH-5087

Loading…
Cancel
Save