Skip to content

Commit

Permalink
Add support for Executables in DatabaseShardedMongoTemplate (#52)
Browse files Browse the repository at this point in the history
* Fix some examples

* Add support to Executables for DatabaseShardedMongoTemplate

* Fix some Javadocs

* Fix existing Unittests

* Fix NPEs
  • Loading branch information
shashankrnr32 committed Apr 18, 2023
1 parent 7cd5fb5 commit 2756660
Show file tree
Hide file tree
Showing 29 changed files with 693 additions and 96 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
<lombok.version>1.18.26</lombok.version>
<apache.commons.lang3.version>3.12.0</apache.commons.lang3.version>
<apache.commons.collection.version>3.2.2</apache.commons.collection.version>
<spring.data.mongodb.version>3.3.10</spring.data.mongodb.version>
<spring.data.mongodb.version>3.4.10</spring.data.mongodb.version>
<mongodb.driver.version>4.8.2</mongodb.driver.version>
<reactor.core.version>3.5.4</reactor.core.version>
<mockito.inline.version>3.12.4</mockito.inline.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,27 @@ public ResponseEntity<?> insert(@RequestBody EntityDTO testShardedEntity,
@RequestParam ShardingType shardingType,
@RequestParam DataSourceType dataSourceType,
@RequestParam boolean reactive) {
serviceFactory.get(shardingType, dataSourceType, reactive).insert(testShardedEntity);
return ResponseEntity.noContent().build();
EntityDTO persistedEntityDTO = serviceFactory.get(shardingType, dataSourceType, reactive).insert(testShardedEntity);
return ResponseEntity.ok(persistedEntityDTO.getId());
}

@GetMapping(path = "/find/indexed/{value}")
public ResponseEntity<?> findByIndexedField(@PathVariable String value,
@RequestParam @Nullable String collectionShardHint,
@RequestParam @Nullable String databaseShardHint,
@RequestParam ShardingType shardingType,
@RequestParam DataSourceType dataSourceType,
@RequestParam boolean reactive) {
if (StringUtils.isNotBlank(collectionShardHint)) {
ShardingHintManager.setCollectionHint(collectionShardHint);
ShardingHintManager.setDatabaseHint(databaseShardHint);
}
Optional<?> entityOptional = serviceFactory.get(shardingType, dataSourceType, reactive).findByIndexedField(value);
if (entityOptional.isPresent()) {
return ResponseEntity.ok(entityOptional);
} else {
return ResponseEntity.notFound().build();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

@Data
public class EntityDTO {
private String id;
private String indexedField;

public TestShardedEntity toEntity() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public String resolveDatabaseHint() {
public EntityDTO toDTO() {
EntityDTO entityDTO = new EntityDTO();
entityDTO.setIndexedField(indexedField);
entityDTO.setId(id);
return entityDTO;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Mono;

import java.util.Optional;

@Repository
public interface CollectionShardedEntityReactiveRepository extends ReactiveMongoRepository<TestShardedEntity, String> {

Mono<Optional<TestShardedEntity>> findByIndexedField(String indexedField);
Mono<TestShardedEntity> findByIndexedField(String indexedField);

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
@Repository
public interface DatabaseShardedEntityRepository extends MongoRepository<TestShardedEntity, String> {

Optional<TestShardedEntity> findByIndexedField(String indexedField);
Optional<TestShardedEntity> findOneByIndexedField(String indexedField);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Mono;

import java.util.Optional;

@Repository
public interface DatabaseShardedEntityReactiveRepository extends ReactiveMongoRepository<TestShardedEntity, String> {

Mono<Optional<TestShardedEntity>> findByIndexedField(String indexedField);
Mono<TestShardedEntity> findByIndexedField(String indexedField);

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ public interface ShardedOperationsService {

Optional<EntityDTO> findByIndexedField(String indexedFieldValue);

void insert(EntityDTO entity);
EntityDTO insert(EntityDTO entity);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ public Optional<EntityDTO> findById(String id) {
public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
return collectionShardedEntityReactiveRepository
.findByIndexedField(indexedFieldValue)
.map(entityOptional -> entityOptional.map(TestShardedEntity::toDTO)).block();
.map(entity -> Optional.ofNullable(entity.toDTO()))
.onErrorReturn(Optional.empty()).block();
}

@Override
public void insert(EntityDTO entity) {
collectionShardedEntityReactiveRepository.insert(entity.toEntity()).block();
public EntityDTO insert(EntityDTO entity) {
return collectionShardedEntityReactiveRepository.insert(entity.toEntity()).map(TestShardedEntity::toDTO).block();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ public Optional<EntityDTO> findById(String id) {
public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
return databaseShardedEntityReactiveRepository
.findByIndexedField(indexedFieldValue)
.map(entityOptional -> entityOptional.map(TestShardedEntity::toDTO)).block();
.map(entity -> Optional.ofNullable(entity.toDTO()))
.onErrorReturn(Optional.empty()).block();
}

@Override
public void insert(EntityDTO entity) {
databaseShardedEntityReactiveRepository.insert(entity.toEntity()).block();
public EntityDTO insert(EntityDTO entity) {
return databaseShardedEntityReactiveRepository.insert(entity.toEntity()).map(TestShardedEntity::toDTO).block();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
}

@Override
public void insert(EntityDTO entity) {
collectionShardedEntityRepository.insert(entity.toEntity());
public EntityDTO insert(EntityDTO entity) {
return collectionShardedEntityRepository.insert(entity.toEntity()).toDTO();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ public Optional<EntityDTO> findById(String id) {

@Override
public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
return databaseShardedEntityRepository.findByIndexedField(indexedFieldValue).map(TestShardedEntity::toDTO);
return databaseShardedEntityRepository.findOneByIndexedField(indexedFieldValue).map(TestShardedEntity::toDTO);
}

@Override
public void insert(EntityDTO entity) {
databaseShardedEntityRepository.insert(entity.toEntity());
public EntityDTO insert(EntityDTO entity) {
return databaseShardedEntityRepository.insert(entity.toEntity()).toDTO();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
}

@Override
public void insert(EntityDTO entity) {
collectionShardedEntityReactiveMongoTemplate.insert(entity.toEntity()).block();
public EntityDTO insert(EntityDTO entity) {
return collectionShardedEntityReactiveMongoTemplate.insert(entity.toEntity()).map(TestShardedEntity::toDTO).block();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
}

@Override
public void insert(EntityDTO entity) {
databaseShardedEntityReactiveMongoTemplate.insert(entity.toEntity()).block();
public EntityDTO insert(EntityDTO entity) {
return databaseShardedEntityReactiveMongoTemplate.insert(entity.toEntity()).map(TestShardedEntity::toDTO).block();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
}

@Override
public void insert(EntityDTO entity) {
collectionShardedEntityMongoTemplate.insert(entity.toEntity());
public EntityDTO insert(EntityDTO entity) {
return collectionShardedEntityMongoTemplate.insert(entity.toEntity()).toDTO();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Optional<EntityDTO> findByIndexedField(String indexedFieldValue) {
}

@Override
public void insert(EntityDTO entity) {
databaseShardedEntityMongoTemplate.insert(entity.toEntity());
public EntityDTO insert(EntityDTO entity) {
return databaseShardedEntityMongoTemplate.insert(entity.toEntity()).toDTO();
}
}
Loading

0 comments on commit 2756660

Please sign in to comment.