diff --git a/backend/pokerogue/src/main/java/com/pokerogue/helper/item/controller/ItemController.java b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/controller/ItemController.java new file mode 100644 index 00000000..e6fe173c --- /dev/null +++ b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/controller/ItemController.java @@ -0,0 +1,29 @@ +package com.pokerogue.helper.item.controller; + +import com.pokerogue.helper.item.dto.ItemResponse; +import com.pokerogue.helper.item.service.ItemService; +import com.pokerogue.helper.util.dto.ApiResponse; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + + +@Controller +@RequiredArgsConstructor +public class ItemController { + + private final ItemService itemService; + + @GetMapping("/api/v1/items") + public ApiResponse> itemList() { + return new ApiResponse<>("아이템 리스트 불러오기에 성공했습니다.", itemService.findAll()); + } + + @GetMapping("/api/v1/item/{id}") + public ApiResponse itemDetails(@PathVariable("id") String id) { + return new ApiResponse<>("아이템 정보 불러오기에 성공했습니다.", itemService.findById(id)); + } + +} diff --git a/backend/pokerogue/src/main/java/com/pokerogue/helper/item/data/Item.java b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/data/Item.java new file mode 100644 index 00000000..d9ad50dc --- /dev/null +++ b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/data/Item.java @@ -0,0 +1,29 @@ +package com.pokerogue.helper.item.data; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; + +@Getter +@Document(collection = "item") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Item { + + @Id + private String id; + + @Id + private String imageId; + + @Field("name") + private String name; + + @Field("koName") + private String koName; + + @Field("description") + private String description; +} diff --git a/backend/pokerogue/src/main/java/com/pokerogue/helper/item/dto/ItemResponse.java b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/dto/ItemResponse.java new file mode 100644 index 00000000..27324a15 --- /dev/null +++ b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/dto/ItemResponse.java @@ -0,0 +1,10 @@ +package com.pokerogue.helper.item.dto; + +import com.pokerogue.helper.item.data.Item; + +public record ItemResponse(String id, String imageId, String koName, String description) { + + public static ItemResponse from(Item item) { + return new ItemResponse(item.getId(), item.getImageId(), item.getKoName(), item.getDescription()); + } +} diff --git a/backend/pokerogue/src/main/java/com/pokerogue/helper/item/repository/ItemRepository.java b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/repository/ItemRepository.java new file mode 100644 index 00000000..2076933b --- /dev/null +++ b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/repository/ItemRepository.java @@ -0,0 +1,7 @@ +package com.pokerogue.helper.item.repository; + +import com.pokerogue.helper.item.data.Item; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface ItemRepository extends MongoRepository { +} diff --git a/backend/pokerogue/src/main/java/com/pokerogue/helper/item/service/ItemService.java b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/service/ItemService.java new file mode 100644 index 00000000..feb0d8ba --- /dev/null +++ b/backend/pokerogue/src/main/java/com/pokerogue/helper/item/service/ItemService.java @@ -0,0 +1,29 @@ +package com.pokerogue.helper.item.service; + + +import com.pokerogue.helper.global.exception.ErrorMessage; +import com.pokerogue.helper.global.exception.GlobalCustomException; +import com.pokerogue.helper.item.dto.ItemResponse; +import com.pokerogue.helper.item.repository.ItemRepository; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class ItemService { + + private final ItemRepository itemRepository; + + public List findAll() { + return itemRepository.findAll().stream() + .map(ItemResponse::from) + .toList(); + } + + public ItemResponse findById(String id) { + return itemRepository.findById(id) + .map(ItemResponse::from) + .orElseThrow(() -> new GlobalCustomException(ErrorMessage.ITEM_NOT_FOUND)); + } +}