From 4c4cf60518e38ac73a6c0a6c4098f1f2cf794fea Mon Sep 17 00:00:00 2001 From: dongseoki <43495319+dongseoki@users.noreply.github.com> Date: Sun, 12 Nov 2023 11:10:42 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20=ED=83=9C=EA=B7=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bside_311/controller/TagController.java | 41 +++++++++++++++++++ .../bside_311/dto/SearchTagResponseDto.java | 25 +++++++++++ .../bside/bside_311/dto/TagReponseDto.java | 23 +++++++++++ .../bside_311/repository/TagRepository.java | 2 + .../bside/bside_311/service/TagService.java | 4 ++ 5 files changed, 95 insertions(+) create mode 100644 server/src/main/java/com/bside/bside_311/controller/TagController.java create mode 100644 server/src/main/java/com/bside/bside_311/dto/SearchTagResponseDto.java create mode 100644 server/src/main/java/com/bside/bside_311/dto/TagReponseDto.java diff --git a/server/src/main/java/com/bside/bside_311/controller/TagController.java b/server/src/main/java/com/bside/bside_311/controller/TagController.java new file mode 100644 index 0000000..43127c5 --- /dev/null +++ b/server/src/main/java/com/bside/bside_311/controller/TagController.java @@ -0,0 +1,41 @@ +package com.bside.bside_311.controller; + +import com.bside.bside_311.dto.SearchTagResponseDto; +import com.bside.bside_311.dto.UserSignupRequestDto; +import com.bside.bside_311.dto.UserSignupResponseDto; +import com.bside.bside_311.entity.User; +import com.bside.bside_311.service.TagService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/tag") +@Tag(name = "태그", description = "태그 API") +public class TagController { + private final TagService tagService; + + @Operation(summary = "[o]태그 조회", description = "태그 조회 API") + @GetMapping() + @ResponseStatus(HttpStatus.OK) + public SearchTagResponseDto searchTag( + @RequestParam(name="page", defaultValue ="0") + @Schema(description = "검색 키워드 기본값 빈값", example = "") + String searchKeyword) + { + return SearchTagResponseDto.of(tagService.searchTag(searchKeyword)); + } +} diff --git a/server/src/main/java/com/bside/bside_311/dto/SearchTagResponseDto.java b/server/src/main/java/com/bside/bside_311/dto/SearchTagResponseDto.java new file mode 100644 index 0000000..49661ef --- /dev/null +++ b/server/src/main/java/com/bside/bside_311/dto/SearchTagResponseDto.java @@ -0,0 +1,25 @@ +package com.bside.bside_311.dto; + +import com.bside.bside_311.entity.Tag; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter +@AllArgsConstructor +public class SearchTagResponseDto { + private List list; + private Long totalCount; + + public static SearchTagResponseDto of(List tags) { + List list = + tags.stream().map(TagReponseDto::of) + .collect(java.util.stream.Collectors.toList()); + return new SearchTagResponseDto(list, (long) list.size()); + } + +} diff --git a/server/src/main/java/com/bside/bside_311/dto/TagReponseDto.java b/server/src/main/java/com/bside/bside_311/dto/TagReponseDto.java new file mode 100644 index 0000000..610776a --- /dev/null +++ b/server/src/main/java/com/bside/bside_311/dto/TagReponseDto.java @@ -0,0 +1,23 @@ +package com.bside.bside_311.dto; + +import com.bside.bside_311.entity.Tag; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Getter + +@AllArgsConstructor +public class TagReponseDto { + private String name; + private LocalDateTime createdDate; + + public static TagReponseDto of(Tag tag) { + return new TagReponseDto(tag.getName(), tag.getCreatedDate()); + } + +} diff --git a/server/src/main/java/com/bside/bside_311/repository/TagRepository.java b/server/src/main/java/com/bside/bside_311/repository/TagRepository.java index 5c86f3f..546f8c7 100644 --- a/server/src/main/java/com/bside/bside_311/repository/TagRepository.java +++ b/server/src/main/java/com/bside/bside_311/repository/TagRepository.java @@ -18,4 +18,6 @@ public interface TagRepository extends JpaRepository { List findByPostTagsInAndDelYnIs(List postTags, YesOrNo delYn); List findByAlcoholTagsInAndDelYnIs(List alcoholTags, YesOrNo n); + + List findByNameContainingAndDelYnIs(String searchKeyword, YesOrNo n); } diff --git a/server/src/main/java/com/bside/bside_311/service/TagService.java b/server/src/main/java/com/bside/bside_311/service/TagService.java index a66daa3..003104f 100644 --- a/server/src/main/java/com/bside/bside_311/service/TagService.java +++ b/server/src/main/java/com/bside/bside_311/service/TagService.java @@ -30,6 +30,10 @@ public List addOrSetTags(List tagStrList) { return tags; } + + public List searchTag(String searchKeyword) { + return tagRepository.findByNameContainingAndDelYnIs(searchKeyword, YesOrNo.N); + } }