Skip to content
This repository has been archived by the owner on Nov 27, 2024. It is now read-only.

Commit

Permalink
refactor :: UserAdapter.java
Browse files Browse the repository at this point in the history
  • Loading branch information
ori0o0p committed May 10, 2024
1 parent d2acd23 commit 87fc29d
Showing 1 changed file with 23 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import reactor.core.scheduler.Schedulers;

import java.security.Principal;
import java.util.Optional;

@Component
public class UserAdapter implements FindUserPort, SaveUserPort, DeleteUserPort {
Expand Down Expand Up @@ -53,35 +54,38 @@ public Mono<User> findByEmail(String email) {

@Override
public Flux<User> findAllByGenAndMajorAndClub(FindUserDto request) {
Query query = buildQuery(request);
query.with(PageRequest.of(request.pagingInfo().page(), request.pagingInfo().size()));

return mongoQueryUtils.find(query, User.class)
.subscribeOn(Schedulers.boundedElastic());
}

private Query buildQuery(FindUserDto request) {
Query query = new Query();

if(request.gen() != null) {
query.addCriteria(Criteria.where("detail.gen").is(request.gen()));
}
if(request.major() != null && !request.major().isBlank()) {
Optional.ofNullable(request.gen())
.ifPresent(gen -> query.addCriteria(Criteria.where("detail.gen").is(gen)));

if (isNotBlank(request.major())){
query.addCriteria(Criteria.where("detail.major").is(MajorType.valueOf(request.major()).getMajor()));
}
if(request.club() != null && !request.club().isBlank()) {

if (isNotBlank(request.club())){
query.addCriteria(Criteria.where("detail.club").is(request.club()));
}
var sortBy = request.pagingInfo().sortBy();
if ((sortBy != null && !sortBy.isBlank())) {
var sortDirection = request.pagingInfo().sortDirection();
if (sortDirection != null && sortDirection.equals(1)) {
query.with(sortBy(Sort.Direction.ASC, sortBy));
} else {
query.with(sortBy(Sort.Direction.DESC, sortBy));
}
}

query.with(PageRequest.of(request.pagingInfo().page(), request.pagingInfo().size()));
Optional.ofNullable(request.pagingInfo().sortBy())
.ifPresent(sortBy -> {
Sort.Direction direction = request.pagingInfo().sortDirection() == 1 ? Sort.Direction.ASC : Sort.Direction.DESC;
query.with(Sort.by(direction, sortBy));
});

return mongoQueryUtils.find(query, User.class)
.subscribeOn(Schedulers.boundedElastic());
return query;
}

private Sort sortBy(Sort.Direction direction, String sortBy) {
return Sort.by(direction, sortBy);
private boolean isNotBlank(String str) {
return !str.isBlank();
}

@Override
Expand Down

0 comments on commit 87fc29d

Please sign in to comment.