Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Code Review] 환이 code review #17

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added UMC-0-WORKBOOK.zip
Binary file not shown.
5 changes: 3 additions & 2 deletions UMC-0-WORKBOOK/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ plugins {

group = 'com.example'
version = '1.0.0'
sourceCompatibility = '17'

repositories {
mavenCentral()
Expand All @@ -19,6 +18,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.hibernate.orm:hibernate-core:6.0.2.Final' // Hibernate 6.0.2 이상
Copy link
Member

Choose a reason for hiding this comment

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

하이버네이트를 명시적으로 설정한 이유가 있을까요?

implementation 'mysql:mysql-connector-java:8.0.33' // MySQL 드라이버 추가
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'

// queryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
Expand All @@ -33,6 +33,7 @@ dependencies {

compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'
implementation 'org.springframework.boot:spring-boot-starter-validation'

// implementation 'org.hibernate:hibernate-core:5.6.9.Final'

Expand Down Expand Up @@ -74,4 +75,4 @@ configurations {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
}
1 change: 1 addition & 0 deletions UMC-0-WORKBOOK/settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@

rootProject.name = 'workbook-zero'
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,14 @@ public enum ErrorStatus implements BaseErrorCode{
NICKNAME_NOT_EXIST(HttpStatus.BAD_REQUEST, "MEMBER4002", "닉네임은 필수 입니다."),

// 예시
ARTICLE_NOT_FOUND(HttpStatus.NOT_FOUND, "ARTICLE4001", "게시글이 없습니다.");
ARTICLE_NOT_FOUND(HttpStatus.NOT_FOUND, "ARTICLE4001", "게시글이 없습니다."),
FOOD_CATEGORY_NOT_FOUND(HttpStatus.NOT_FOUND, "FOOD_CATEGORY4001", "음식 카테고리를 찾을 수 없습니다."),
REGION_NOT_FOUND(HttpStatus.NOT_FOUND, "REGION4001", "지역을 찾을 수 없습니다."),
STORE_NOT_FOUND(HttpStatus.NOT_FOUND, "STORE4001", "가게를 찾을 수 없습니다."),
REVIEW_NOT_FOUND(HttpStatus.NOT_FOUND, "REVIEW4001", "리뷰를 찾을 수 없습니다."),
MISSION_NOT_FOUND(HttpStatus.NOT_FOUND, "MISSION4001", "미션을 찾을 수 없습니다."),
MISSION_ALREADY_COMPLETED(HttpStatus.BAD_REQUEST, "MISSION4002", "이미 완료된 미션입니다.");


private final HttpStatus httpStatus;
private final String code;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package umc.study.apiPayload.exception.handler;

import umc.study.apiPayload.code.status.BaseErrorCode;
import umc.study.apiPayload.exception.GeneralException;

public class FoodCategoryHandler extends GeneralException {

public FoodCategoryHandler(BaseErrorCode errorCode){
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package umc.study.apiPayload.exception.handler;

import umc.study.apiPayload.code.status.BaseErrorCode;
import umc.study.apiPayload.exception.GeneralException;

public class MissionHandler extends GeneralException {
public MissionHandler(BaseErrorCode errorCode){
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package umc.study.apiPayload.exception.handler;

import umc.study.apiPayload.code.status.BaseErrorCode;
import umc.study.apiPayload.exception.GeneralException;

public class RegionHandler extends GeneralException {

public RegionHandler(BaseErrorCode errorCode){
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package umc.study.apiPayload.exception.handler;

import umc.study.apiPayload.code.status.BaseErrorCode;
import umc.study.apiPayload.exception.GeneralException;

public class StoreHandler extends GeneralException {
public StoreHandler (BaseErrorCode errorCode){
super(errorCode);
}
}
35 changes: 35 additions & 0 deletions UMC-0-WORKBOOK/src/main/java/umc/study/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,39 @@
package umc.study.config;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {

@Bean
public OpenAPI UMCstudyAPI() {
Info info = new Info()
.title("UMC Server WorkBook API")
.description("UMC Server WorkBook API 명세서")
.version("1.0.0");

String jwtSchemeName = "JWT TOKEN";
// API 요청헤더에 인증정보 포함
SecurityRequirement securityRequirement = new SecurityRequirement().addList(jwtSchemeName);
// SecuritySchemes 등록
Components components = new Components()
.addSecuritySchemes(jwtSchemeName, new SecurityScheme()
.name(jwtSchemeName)
.type(SecurityScheme.Type.HTTP) // HTTP 방식
.scheme("bearer")
.bearerFormat("JWT"));

return new OpenAPI()
.addServersItem(new Server().url("/"))
.info(info)
.addSecurityItem(securityRequirement)
.components(components);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package umc.study.converter;

import umc.study.domain.Member;
import umc.study.domain.enums.Gender;
import umc.study.web.dto.MemberDTO.MemberRequestDTO;
import umc.study.web.dto.MemberDTO.MemberResponseDTO;

import java.time.LocalDateTime;

public class MemberConverter {

public static MemberResponseDTO.JoinResultDTO toJoinResultDTO(Member member){
return MemberResponseDTO.JoinResultDTO.builder()
.memberId(member.getId())
.createdAt(LocalDateTime.now())
.build();
}

public static Member toMember(MemberRequestDTO.JoinDto request){

Gender gender = null;

switch(request.getGender()){
case 1:
Copy link
Member

Choose a reason for hiding this comment

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

switch 문을 이렇게 사용하는 것은 가독성 좋지 않은 것 같아요. switch 문을 가독성 좋게 사용하려면 어떻게 할 수 있을까요?

gender = Gender.MALE;;
break;
case 2:
gender = Gender.FEMALE;
break;
}

return Member.builder()
.address(request.getAddress())
.gender(gender)
.name(request.getName())
.age(request.getAge())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package umc.study.converter;

import umc.study.domain.FoodCategory;
import umc.study.domain.mapping.MemberFood;

import java.util.List;
import java.util.stream.Collectors;

public class MemberFoodConverter {

public static List<MemberFood> toMemberFoodList(List<FoodCategory> foodCategoryList){

return foodCategoryList.stream()
.map(foodCategory ->
MemberFood.builder()
.foodCategory(foodCategory)
.build()
).collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package umc.study.converter;

import umc.study.domain.Mission;
import umc.study.domain.mapping.MemberMission;

import java.util.List;
import java.util.stream.Collectors;

public class MemberMissionConverter {

public static List<MemberMission> toMemberMissionList(List<Mission> missionList){

return missionList.stream()
.map(mission ->
MemberMission.builder()
.mission(mission)
.build()
).collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package umc.study.converter;

import umc.study.domain.Mission;
import umc.study.domain.enums.MissionStatus;
import umc.study.web.dto.MissionDTO.MissionRequestDTO;
import umc.study.web.dto.MissionDTO.MissionResponseDTO;

import java.time.LocalDateTime;

public class MissionConverter {

public static MissionResponseDTO.JoinResultDTO toJoinResultDTO(Mission mission){
return MissionResponseDTO.JoinResultDTO.builder()
.missionId((mission.getId()))
.createdAt(LocalDateTime.now())
.build();
}

public static Mission toMission(MissionRequestDTO.JoinDto request){

MissionStatus missionStatus = null;

switch(request.getMissionStatus()){
case CHALLENGING:
missionStatus = MissionStatus.CHALLENGING;
break;
case COMPLETED:
missionStatus = MissionStatus.COMPLETED;
break;
}

return Mission.builder()
.reward(request.getReward())
.content(request.getContent())
.missionStatus(missionStatus)
.deadline(request.getDeadline())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package umc.study.converter;

import umc.study.domain.Review;
import umc.study.web.dto.ReviewDTO.ReviewRequestDTO;
import umc.study.web.dto.ReviewDTO.ReviewResponseDTO;

import java.time.LocalDateTime;

public class ReviewConverter {

public static ReviewResponseDTO.JoinResultDTO toJoinResultDTO(Review review){
return ReviewResponseDTO.JoinResultDTO.builder()
.reviewId(review.getId())
.createdAt(LocalDateTime.now())
.build();
}

public static Review toReview(ReviewRequestDTO.JoinDto request){

return Review.builder()
.content(request.getContent())
.rating(request.getRating())
.build();

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package umc.study.converter;

import umc.study.domain.Store;
import umc.study.web.dto.StoreDTO.StoreRequestDTO;
import umc.study.web.dto.StoreDTO.StoreResponseDTO;

import java.time.LocalDateTime;

public class StoreConverter {
public static StoreResponseDTO.JoinResultDTO toJoinResultDTO(Store store){
return StoreResponseDTO.JoinResultDTO.builder()
.storeId(store.getId())
.createdAt(LocalDateTime.now())
.build();
}

public static Store toStore(StoreRequestDTO.JoinDto request){


return Store.builder()
.address(request.getAddress())
.name(request.getName())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package umc.study.converter;

import umc.study.web.dto.TempResponse;
import umc.study.web.dto.TempDTO.TempResponse;

public class TempConverter {

Expand Down
8 changes: 7 additions & 1 deletion UMC-0-WORKBOOK/src/main/java/umc/study/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import umc.study.domain.common.BaseEntity;
import umc.study.domain.enums.Gender;
import umc.study.domain.enums.UserStatus;
Expand All @@ -16,6 +19,8 @@

@Entity
@Getter
@DynamicUpdate
@DynamicInsert
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
Expand All @@ -34,9 +39,10 @@ public class Member extends BaseEntity {
@Column(nullable = false)
private Integer age;

@Column(nullable = false, length = 40)
// @Column(nullable = false, length = 40)
private String email;

@ColumnDefault("0")
private Integer point;

@Column(nullable = false, length = 20)
Expand Down
5 changes: 5 additions & 0 deletions UMC-0-WORKBOOK/src/main/java/umc/study/domain/Mission.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import umc.study.domain.common.BaseEntity;
import umc.study.domain.enums.MissionStatus;
import umc.study.domain.mapping.MemberMission;
Expand All @@ -12,6 +14,8 @@

@Entity
@Getter
@DynamicUpdate
@DynamicInsert
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
Expand Down Expand Up @@ -40,4 +44,5 @@ public class Mission extends BaseEntity {
private List<MemberMission> memberMissionList = new ArrayList<>();



}
1 change: 1 addition & 0 deletions UMC-0-WORKBOOK/src/main/java/umc/study/domain/Region.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ public class Region extends BaseEntity {

@OneToMany(mappedBy = "region", cascade = CascadeType.ALL)
private List<Store> storeList = new ArrayList<>();

}
Loading