Skip to content

Commit

Permalink
✨ [Feat] 개발자 검색 API 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
88dldl committed Jul 10, 2024
1 parent c5ea448 commit 87fec57
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/main/java/ssuPlector/controller/DeveloperController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ssuPlector.controller;

import java.util.List;

import jakarta.validation.Valid;

import org.springframework.data.domain.Page;
Expand All @@ -25,6 +27,7 @@
import ssuPlector.dto.request.DeveloperDTO.DeveloperUpdateRequestDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperDetailDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperListResponseDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperSearchDTO;
import ssuPlector.global.response.ApiResponse;
import ssuPlector.security.handler.annotation.AuthUser;
import ssuPlector.service.developer.DeveloperService;
Expand Down Expand Up @@ -93,4 +96,12 @@ public ApiResponse<Long> createDummyDeveloper(
Long developerId = developerService.createDummyDeveloper(requestDTO, image);
return ApiResponse.onSuccess("더미 개발자 생성 완료.", developerId);
}

@Operation(summary = "개발자 검색", description = "개발자 이름을 입력받아 정보를 제공합니다._숙희")
@GetMapping(value = "/search")
public ApiResponse<List<DeveloperSearchDTO>> searchDeveloper(
@RequestParam(value = "developerName") String developerName) {
List<DeveloperSearchDTO> developerList = developerService.searchDeveloper(developerName);
return ApiResponse.onSuccess("개발자 검색 완료.", developerList);
}
}
9 changes: 9 additions & 0 deletions src/main/java/ssuPlector/converter/DeveloperConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import ssuPlector.dto.response.DeveloperDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperDetailDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperPreviewDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperSearchDTO;
import ssuPlector.service.BaseMethod;

@Component
Expand Down Expand Up @@ -120,4 +121,12 @@ public static Developer toDeveloper(DummyDeveloperRequestDTO requestDTO) {
.techStackList(newTechStack)
.build();
}

public static DeveloperSearchDTO toDeveloperSearchDTO(Developer developer) {
return DeveloperSearchDTO.builder()
.id(developer.getId())
.name(developer.getName())
.email(developer.getEmail())
.build();
}
}
10 changes: 10 additions & 0 deletions src/main/java/ssuPlector/dto/response/DeveloperDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,14 @@ public static class DeveloperListResponseDTO {
long totalElement; // 전체 아이템 개수
List<DeveloperResponseDTO> developerResponseDTOList;
}

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class DeveloperSearchDTO {
Long id;
String name;
String email;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package ssuPlector.repository.developer;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

Expand All @@ -9,4 +11,6 @@
public interface DeveloperRepositoryCustom {

Page<Developer> findDevelopers(String sortType, Part part, Pageable pageable);

List<Developer> searchDeveloper(String developerName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,8 @@ BooleanExpression part1Eq(Part part) {
BooleanExpression part2Eq(Part part) {
return part != null ? developer.part2.eq(part) : Expressions.asBoolean(true).isTrue();
}

public List<Developer> searchDeveloper(String name) {
return queryFactory.selectFrom(developer).where(developer.name.contains(name)).fetch();
}
}
1 change: 1 addition & 0 deletions src/main/java/ssuPlector/security/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
"/api/projects/list",
"/api/projects",
"/api/developers/dummy",
"/api/developers/search",
"/api/assistant/pm/summary",
"/api/assistant/pm/meeting")
.permitAll()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.springframework.web.multipart.MultipartFile;

import ssuPlector.domain.Developer;
import ssuPlector.dto.response.DeveloperDTO.DeveloperSearchDTO;

public interface DeveloperService {
Long createDeveloper(String email, DeveloperRequestDTO requestDTO);
Expand All @@ -25,4 +26,6 @@ public interface DeveloperService {
Page<Developer> getDeveloperList(DeveloperListRequestDTO requestDTO, int page);

Long createDummyDeveloper(DummyDeveloperRequestDTO requestDTO, MultipartFile image);

List<DeveloperSearchDTO> searchDeveloper(String developerName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import ssuPlector.dto.request.DeveloperDTO.DeveloperListRequestDTO;
import ssuPlector.dto.request.DeveloperDTO.DeveloperRequestDTO;
import ssuPlector.dto.request.DeveloperDTO.DeveloperUpdateRequestDTO;
import ssuPlector.dto.response.DeveloperDTO.DeveloperSearchDTO;
import ssuPlector.global.exception.GlobalException;
import ssuPlector.global.response.code.GlobalErrorCode;
import ssuPlector.redis.service.DeveloperHitsService;
Expand Down Expand Up @@ -130,4 +131,12 @@ public Long createDummyDeveloper(

return developerRepository.save(dummyDeveloper).getId();
}

@Override
public List<DeveloperSearchDTO> searchDeveloper(String developerName) {
List<Developer> developers = developerRepository.searchDeveloper(developerName);
return developers.stream()
.map(DeveloperConverter::toDeveloperSearchDTO)
.toList();
}
}

0 comments on commit 87fec57

Please sign in to comment.