@@ -14,6 +14,7 @@ import org.springframework.data.couchbase.core.RemoveResult;
|
||||
import org.springframework.data.couchbase.util.Capabilities;
|
||||
import org.springframework.data.couchbase.util.ClusterType;
|
||||
import org.springframework.data.couchbase.util.IgnoreWhen;
|
||||
import org.springframework.data.util.Pair;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.publisher.ParallelFlux;
|
||||
@@ -130,6 +131,26 @@ public class FluxTest extends JavaIntegrationTests {
|
||||
assertEquals(0, airports.size(), "should have been all deleted");
|
||||
}
|
||||
|
||||
@Test
|
||||
@IgnoreWhen(missesCapabilities = { Capabilities.QUERY }, clusterTypes = ClusterType.MOCKED)
|
||||
public void pairIdAndResult() {
|
||||
LinkedList<Airport> list = new LinkedList<>();
|
||||
Airport a = new Airport(UUID.randomUUID().toString(), "iata", "lowp");
|
||||
for (int i = 0; i < 5; i++) {
|
||||
list.add(a.withId(UUID.randomUUID().toString()));
|
||||
}
|
||||
Flux<Object> af = Flux.fromIterable(list).concatMap((entity) -> airportRepository.save(entity));
|
||||
List<Object> saved = af.collectList().block();
|
||||
System.out.println("results.size() : " + saved.size());
|
||||
Flux<Pair<String, Mono<Airport>>> pairFlux = Flux.fromIterable(list)
|
||||
.map((airport) -> Pair.of(airport.getId(), airportRepository.findById(airport.getId())));
|
||||
List<Pair<String, Mono<Airport>>> airportPairs = pairFlux.collectList().block();
|
||||
for (Pair<String, Mono<Airport>> airportPair : airportPairs) {
|
||||
System.out.println("id: " + airportPair.getFirst() + " airport: " + airportPair.getSecond().block());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void flatMapCB() throws Exception {
|
||||
System.out.println("Start flatMapCB");
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
import org.springframework.data.annotation.LastModifiedDate;
|
||||
import org.springframework.data.annotation.PersistenceConstructor;
|
||||
import org.springframework.data.annotation.Transient;
|
||||
import org.springframework.data.annotation.Version;
|
||||
import org.springframework.data.couchbase.core.mapping.Document;
|
||||
|
||||
@@ -41,6 +42,8 @@ public class User extends ComparableEntity {
|
||||
@Id private String id;
|
||||
private String firstname;
|
||||
private String lastname;
|
||||
@Transient
|
||||
private String transientInfo;
|
||||
@CreatedBy private String createdBy;
|
||||
@CreatedDate private long createdDate;
|
||||
@LastModifiedBy private String lastModifiedBy;
|
||||
@@ -94,4 +97,10 @@ public class User extends ComparableEntity {
|
||||
return Objects.hash(id, firstname, lastname);
|
||||
}
|
||||
|
||||
public String getTransientInfo(){
|
||||
return transientInfo;
|
||||
}
|
||||
public void setTransientInfo(String something) {
|
||||
transientInfo = something;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2020 the original author or authors
|
||||
* Copyright 2012-2021 the original author or authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,7 +17,9 @@
|
||||
package org.springframework.data.couchbase.domain;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.couchbase.client.java.query.QueryScanConsistency;
|
||||
import org.springframework.data.couchbase.repository.CouchbaseRepository;
|
||||
import org.springframework.data.couchbase.repository.Query;
|
||||
import org.springframework.data.couchbase.repository.ScanConsistency;
|
||||
@@ -25,7 +27,6 @@ import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.couchbase.client.java.json.JsonArray;
|
||||
import com.couchbase.client.java.query.QueryScanConsistency;
|
||||
|
||||
/**
|
||||
* User Repository for tests
|
||||
@@ -34,11 +35,13 @@ import com.couchbase.client.java.query.QueryScanConsistency;
|
||||
* @author Michael Reiche
|
||||
*/
|
||||
@Repository
|
||||
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
|
||||
@ScanConsistency(query=QueryScanConsistency.REQUEST_PLUS)
|
||||
public interface UserRepository extends CouchbaseRepository<User, String> {
|
||||
|
||||
List<User> findByFirstname(String firstname);
|
||||
|
||||
Stream<User> findByLastname(String lastname);
|
||||
|
||||
List<User> findByFirstnameIn(String... firstnames);
|
||||
|
||||
List<User> findByFirstnameIn(JsonArray firstnames);
|
||||
@@ -54,5 +57,4 @@ public interface UserRepository extends CouchbaseRepository<User, String> {
|
||||
List<User> findByIdIsNotNullAndFirstnameEquals(String firstname);
|
||||
|
||||
List<User> findByVersionEqualsAndFirstnameEquals(Long version, String firstname);
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -354,11 +355,20 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
|
||||
assertNull(airport2, "airport2 should have likely been null at least once");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransient() {
|
||||
User user = new User("1", "Dave", "Wilson");
|
||||
user.setTransientInfo("something");
|
||||
userRepository.save(user);
|
||||
Optional<User> foundUser = userRepository.findById(user.getId());
|
||||
assertEquals(null, foundUser.get().getTransientInfo());
|
||||
userRepository.delete(user);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCas() {
|
||||
User user = new User("1", "Dave", "Wilson");
|
||||
userRepository.save(user);
|
||||
userRepository.findByFirstname("Dave");
|
||||
user.setVersion(user.getVersion() - 1);
|
||||
assertThrows(DataIntegrityViolationException.class, () -> userRepository.save(user));
|
||||
user.setVersion(0);
|
||||
@@ -366,6 +376,21 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
|
||||
userRepository.delete(user);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStreamQuery() {
|
||||
User user1 = new User("1", "Dave", "Wilson");
|
||||
User user2 = new User("2", "Brian", "Wilson");
|
||||
|
||||
userRepository.save(user1);
|
||||
userRepository.save(user2);
|
||||
List<User> users = userRepository.findByLastname("Wilson").collect(Collectors.toList());
|
||||
assertEquals(2,users.size());
|
||||
assertTrue(users.contains(user1));
|
||||
assertTrue(users.contains(user2));
|
||||
userRepository.delete(user1);
|
||||
userRepository.delete(user2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExpiryAnnotation() {
|
||||
UserAnnotated user = new UserAnnotated("1", "Dave", "Wilson");
|
||||
|
||||
Reference in New Issue
Block a user