Skip to content

Step1 - 상품 관리 기능#46

Open
yh0921k wants to merge 15 commits into
next-step:yh0921kfrom
yh0921k:step1
Open

Step1 - 상품 관리 기능#46
yh0921k wants to merge 15 commits into
next-step:yh0921kfrom
yh0921k:step1

Conversation

@yh0921k
Copy link
Copy Markdown

@yh0921k yh0921k commented May 24, 2023

보민님 안녕하세요!
미션이 많이 늦어져 죄송합니다.

코드가 많이 부족한데, 피드백 주시면 성실히 반영하겠습니다!

yh0921k added 15 commits May 16, 2023 08:36
build.gradle
- 롬복 사용을 위한 의존성 추가
application.properties
- 드라이버, GUI URL 등 설정 추가
data.sql
- id, 이름, 가격, 이미지 URL, 등록날짜 필드 구성
Product.java
- id, 이름, 가격, 이미지 URL 필드 구성

ProductRepository.java
- PRODUCT 테이블 저장 로직 구현
- KeyHolder를 이용해 저장된 Row의 주키 값을 반환받을 수 있음
CreateProductRequest.java
- 요청 필드는 이름, 가격, 이미지 URL로 구성

ProductController.java
- 상품 등록 이후 반환되는 id를 LOCATION 헤더에 URI로 명시
- 해당 URI는 추후 상품 상세 데이터 요청 등에 사용될 수 있음

ProductService.java
- 현재 서비스 레이어는 단순히 컨트롤러 및 Repository 레이어를 연결해주는 계층 역할을함
Product.java
- 저장소 레이어의 BeanPropertyRowMapper 사용을 위한 Setter 추가

ProductRepository.java
- 전체 상품 리스트를 조회하여 Product 클래스의 인스턴스로 매핑하는 쿼리 구현
FindProductResponse.java
- id, 이름, 가격, 이미지 URL 필드 구성

ProductController.java
ProductService.java
- 데이터베이스에서 상품 리스트를 조회하여 DTO 변환 후 반환
ProductViewController.java
- 해당 컨트롤러는 JSON 데이터를 내려주지 않고, 실제 페이지를 반환
- 페이지 내부 구성에 필요한 데이터 매핑을 위한 Model 객체 사용

index.html
- 컨트롤러에서 Model에 저장한 데이터 렌더링
ProductRequest.java
- 등록 뿐만 아니라 업데이트에도 동일 요청 파라미터를 사용할 수 있어 포괄적인 의미의 이름으로 변경
ProductRepository.java
- 특정 id의 상품에 대해 전체 필드 업데이트
ProductController.java
- 업데이트가 성공하면 변경된 상품 정보 반환

ProductService.java
- 업데이트가 성공하면 변경된 상품 정보를 기반으로 DTO를 생성해 반환
ProductController.java
ProductService.java
ProductRepository.java
- 상품 id를 이용하여 데이터베이스에서 해당 상품을 제거
CartViewController.java
- 클래스명 변경
- 기존 구현된 ProductService를 사용하여 현재 등록된 상품 목록 조회 및 페이지 연동

admin.html
- 컨트롤러에서 Model에 담아 내려준 데이터 매핑
admin.html
- name 속성은 DTO의 필드명에 맞게 변경

admin.js
- 상품 추가, 상품 수정, 상품 삭제 API 연결
ProductControllerTest.java
- 상품 등록, 상품 리스트 조회, 상품 수정, 상품 삭제 API에 대한 테스트 추가
Copy link
Copy Markdown

@qhals321 qhals321 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 용휘님!

지금까지 구현한 부분들은 잘 진행해주셔서 (Rest Api 설계 방식, 레이어 흐름) 크게 리뷰할 부분이 없네요!!

추가적으로 유효성 검증 관련해서 예외 처리가 있었음 좋을 것 같아요! (예시 : modify 하려 했는데 없는 상품이라던가, 필수값이 null 혹은 blank 라거나 등)

이번 미션 파이팅입니다~! 🔥🔥🔥🔥

import lombok.*;

@Getter
@Setter
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setter 를 추가한 이유가 있나용??

import org.springframework.http.HttpStatus;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ProductControllerTest {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트 💯💯💯💯

인수 테스트 방식으로 테스트를 작성하셨네요~! 해당 테스트만 작성이 되어서 실제로 값이 잘 저장되는지 혹은 값이 다 잘 조회가 되는지 데이터에 대한 테스트가 되지 못한 것 같아요! 이 부분도 한 번 고민해보시면 좋을 것 같아요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants