-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
게시글 작성 기능 API 명세의 변경에 따른 코드 수정 (#173)
* refactor: (#95) 게시글 작성 기능 API 명세의 변경에 따라 게시글 내용의 이미지 추가 * refactor: (#95) PostController import문 정리 * refactor: (#95) h2-console 동작을 위한 설정 추가 * refactor: (#95) 게시글의 마감 기한이 현재 시간보다 3일 이상을 초과한 경우 예외 처리 기능 구현 * refactor: (#95) 마감 기한 제한으로 인한 양성 테스트 코드 수정 * refactor: (#95) 게시글 작성 API 데이터 전달 시, 잘못된 입력 값에 대한 예외 처리 기능 구현 * refactor: (#172) Dto 이름을 더 명확하게 개선 * refactor: (#172) swagger schema 설정 및 valid 설정 개선 * refactor: (#172) 예외 메시지 변경에 의한 테스트 메시지 변경 * refactor: (#172) 이미지 파일 이름 중복을 방지하기 위해 밀리초를 이름에 포함하는 것으로 개선 * refactor: (#172) 날짜 데이터 변환 형식을 DateTimeFormat이 아닌 JsonFormat으로 변환하는 것으로 변경 * refactor: (#172) 이미지 Url 저장 및 변환을 고수준인 도메인에서가 아닌 저수준인 서비스 계층에서 실행하도록 개선 * refactor: (#172) 테스트 코드 개선 * refactor: (#172) 이미지 저장에 실패했을 때 예외를 던지는 것으로 수정 * refactor: (#172) 예외 핸들러의 범위 원복 * refactor: (#172) 최대 마감 기한 유효성 검증 로직을 더 확장성 있게 코드 개선 * refactor: (#172) 새로 만든 엔티티에 BaseEntity 상속 받도록 수정 * refactor: (#172) 객체 비교 시, id로 비교하는 것으로 개선 * refactor: (#172) images 경로 push를 위한 이미지 저장 * refactor: (#172) 서버에서 필요없는 데이터 필드 삭제 * refactor: (#172) 설정 파일에도 h2 console의 path를 명시해주기 * refactor: (#172) 메서드를 사용하는 클래스 변경
- Loading branch information
Showing
22 changed files
with
433 additions
and
85 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 25 additions & 5 deletions
30
backend/src/main/java/com/votogether/domain/post/dto/request/PostCreateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,41 @@ | ||
package com.votogether.domain.post.dto.request; | ||
|
||
import com.fasterxml.jackson.annotation.JsonFormat; | ||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import jakarta.validation.Valid; | ||
import jakarta.validation.constraints.NotBlank; | ||
import jakarta.validation.constraints.NotNull; | ||
import jakarta.validation.constraints.Size; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
import lombok.Builder; | ||
import org.springframework.format.annotation.DateTimeFormat; | ||
import org.hibernate.validator.constraints.Length; | ||
|
||
@Schema(name = "게시글 관련 데이터", description = "게시글에 관련한 데이터들입니다.") | ||
@Schema(description = "게시글에 관련한 데이터들입니다.") | ||
@Builder | ||
public record PostCreateRequest( | ||
@Schema(description = "카테고리의 여러 아이디", example = "[0, 2]") | ||
@Size(min = 1, message = "게시글에 해당하는 카테고리는 최소 1개 이상이어야 합니다.") | ||
List<Long> categoryIds, | ||
|
||
@Schema(description = "게시글 제목", example = "title") | ||
@NotBlank(message = "제목을 입력해주세요.") | ||
@Length(max = 100, message = "제목은 최대 100자까지 입력 가능합니다.") | ||
String title, | ||
|
||
@Schema(description = "게시글 내용", example = "content") | ||
@NotBlank(message = "내용을 입력해주세요.") | ||
@Length(max = 1000, message = "내용은 최대 1000자까지 입력 가능합니다.") | ||
String content, | ||
List<String> postOptionContents, | ||
|
||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") | ||
@Schema(description = "게시글의 여러 선택지") | ||
@Valid | ||
@NotNull(message = "선택지는 최소 2개 이상 등록해야 합니다.") | ||
@Size(min = 2, max = 5, message = "선택지는 최소 2개, 최대 5개까지 등록 가능합니다.") | ||
List<PostOptionCreateRequest> postOptions, | ||
|
||
@Schema(description = "마감 기한", example = "2023-08-01 15:30") | ||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm") | ||
LocalDateTime deadline | ||
) { | ||
|
||
} |
16 changes: 16 additions & 0 deletions
16
backend/src/main/java/com/votogether/domain/post/dto/request/PostOptionCreateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.votogether.domain.post.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import jakarta.validation.constraints.NotBlank; | ||
import lombok.Builder; | ||
import org.hibernate.validator.constraints.Length; | ||
|
||
@Schema(description = "게시글 선택지에 관련한 데이터들입니다.") | ||
@Builder | ||
public record PostOptionCreateRequest( | ||
@Schema(description = "선택지 내용", example = "content") | ||
@NotBlank(message = "해당 선택지의 내용을 입력해주세요.") | ||
@Length(max = 50, message = "선택지의 내용은 최대 50자까지 입력 가능합니다.") | ||
String content | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
backend/src/main/java/com/votogether/domain/post/entity/PostContentImage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package com.votogether.domain.post.entity; | ||
|
||
import com.votogether.domain.common.BaseEntity; | ||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.FetchType; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.JoinColumn; | ||
import jakarta.persistence.ManyToOne; | ||
import lombok.AccessLevel; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Getter | ||
@Entity | ||
public class PostContentImage extends BaseEntity { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
@JoinColumn(name = "post_id", nullable = false) | ||
private Post post; | ||
|
||
@Column | ||
private String imageUrl; | ||
|
||
@Builder | ||
public PostContentImage(final Post post, final String imageUrl) { | ||
this.post = post; | ||
this.imageUrl = imageUrl; | ||
} | ||
|
||
} |
33 changes: 33 additions & 0 deletions
33
backend/src/main/java/com/votogether/domain/post/entity/PostContentImages.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.votogether.domain.post.entity; | ||
|
||
import com.votogether.domain.post.util.ImageUploader; | ||
import jakarta.persistence.CascadeType; | ||
import jakarta.persistence.Embeddable; | ||
import jakarta.persistence.OneToMany; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import lombok.AccessLevel; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import org.springframework.web.multipart.MultipartFile; | ||
|
||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Getter | ||
@Embeddable | ||
public class PostContentImages { | ||
|
||
@OneToMany(mappedBy = "post", cascade = CascadeType.PERSIST, orphanRemoval = true) | ||
private List<PostContentImage> contentImages = new ArrayList<>(); | ||
|
||
public void addContentImage(final Post post, final String contentImageUrl) { | ||
this.contentImages.add(getPostContentImage(post, contentImageUrl)); | ||
} | ||
|
||
private PostContentImage getPostContentImage(final Post post, final String contentImageUrl) { | ||
return PostContentImage.builder() | ||
.post(post) | ||
.imageUrl(contentImageUrl) | ||
.build(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.