-
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.
- Loading branch information
Showing
46 changed files
with
1,213 additions
and
70 deletions.
There are no files selected for viewing
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
18 changes: 18 additions & 0 deletions
18
backend/src/main/java/com/votogether/config/SwaggerBeanConfig.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,18 @@ | ||
package com.votogether.config; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | ||
|
||
@Configuration | ||
public class SwaggerBeanConfig { | ||
|
||
public SwaggerBeanConfig(final MappingJackson2HttpMessageConverter converter) { | ||
final List<MediaType> supportedMediaTypes = new ArrayList<>(converter.getSupportedMediaTypes()); | ||
supportedMediaTypes.add(new MediaType("application", "octet-stream")); | ||
converter.setSupportedMediaTypes(supportedMediaTypes); | ||
} | ||
|
||
} |
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
12 changes: 12 additions & 0 deletions
12
backend/src/main/java/com/votogether/domain/member/repository/MemberCategoryRepository.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,12 @@ | ||
package com.votogether.domain.member.repository; | ||
|
||
import com.votogether.domain.category.entity.Category; | ||
import com.votogether.domain.member.entity.Member; | ||
import com.votogether.domain.member.entity.MemberCategory; | ||
import java.util.Optional; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
|
||
public interface MemberCategoryRepository extends JpaRepository<MemberCategory, Long> { | ||
Optional<MemberCategory> findByMemberAndCategory(final Member member, final Category category); | ||
|
||
} |
58 changes: 58 additions & 0 deletions
58
backend/src/main/java/com/votogether/domain/post/controller/PostController.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,58 @@ | ||
package com.votogether.domain.post.controller; | ||
|
||
import com.votogether.domain.member.entity.Gender; | ||
import com.votogether.domain.member.entity.Member; | ||
import com.votogether.domain.member.entity.SocialType; | ||
import com.votogether.domain.post.dto.request.PostCreateRequest; | ||
import com.votogether.domain.post.service.PostService; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import java.net.URI; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestPart; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import org.springframework.web.multipart.MultipartFile; | ||
|
||
@Tag(name = "게시글", description = "게시글 관련 API") | ||
@RequiredArgsConstructor | ||
@RequestMapping("/posts") | ||
@RestController | ||
public class PostController { | ||
|
||
private final PostService postService; | ||
|
||
@Operation(summary = "게시글 작성", description = "게시글을 저장한다.") | ||
@ApiResponses(value = { | ||
@ApiResponse(responseCode = "201", description = "게시물 생성되었습니다."), | ||
@ApiResponse(responseCode = "400", description = "잘못된 입력입니다."), | ||
@ApiResponse(responseCode = "500", description = "인터넷 서버 오류입니다.") | ||
}) | ||
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) | ||
public ResponseEntity<Void> save( | ||
@RequestPart final PostCreateRequest request, | ||
@RequestPart final List<MultipartFile> images | ||
) { | ||
// TODO : 일단 돌아가게 하기 위한 member 저장 (실제 어플에선 삭제될 코드) | ||
final Member member = Member.builder() | ||
.socialType(SocialType.GOOGLE) | ||
.socialId("tjdtls690") | ||
.nickname("Abel") | ||
.gender(Gender.MALE) | ||
.point(100) | ||
.birthDate(LocalDateTime.now()) | ||
.build(); | ||
|
||
final Long postId = postService.save(request, member, images); | ||
return ResponseEntity.created(URI.create("/posts/" + postId)).build(); | ||
} | ||
|
||
} | ||
|
21 changes: 21 additions & 0 deletions
21
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 |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.votogether.domain.post.dto.request; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
import lombok.Builder; | ||
import org.springframework.format.annotation.DateTimeFormat; | ||
|
||
@Schema(name = "게시글 관련 데이터", description = "게시글에 관련한 데이터들입니다.") | ||
@Builder | ||
public record PostCreateRequest ( | ||
List<Long> categoryIds, | ||
String title, | ||
String content, | ||
List<String> postOptionContents, | ||
|
||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") | ||
LocalDateTime deadline | ||
){ | ||
|
||
} |
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
27 changes: 27 additions & 0 deletions
27
backend/src/main/java/com/votogether/domain/post/entity/PostBody.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,27 @@ | ||
package com.votogether.domain.post.entity; | ||
|
||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Embeddable; | ||
import lombok.AccessLevel; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Getter | ||
@Embeddable | ||
public class PostBody { | ||
|
||
@Column(length = 100, nullable = false) | ||
private String title; | ||
|
||
@Column(length = 1000, nullable = false) | ||
private String content; | ||
|
||
@Builder | ||
private PostBody(final String title, final String content) { | ||
this.title = title; | ||
this.content = content; | ||
} | ||
|
||
} |
32 changes: 32 additions & 0 deletions
32
backend/src/main/java/com/votogether/domain/post/entity/PostCategories.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,32 @@ | ||
package com.votogether.domain.post.entity; | ||
|
||
import com.votogether.domain.category.entity.Category; | ||
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; | ||
|
||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Getter | ||
@Embeddable | ||
public class PostCategories { | ||
|
||
@OneToMany(mappedBy = "post", cascade = CascadeType.PERSIST, orphanRemoval = true) | ||
private List<PostCategory> postCategories = new ArrayList<>(); | ||
|
||
public void mapPostAndCategories(final Post post, final List<Category> categories) { | ||
categories.forEach(category -> postCategories.add(createPostCategory(post, category))); | ||
} | ||
|
||
private PostCategory createPostCategory(final Post post, final Category category) { | ||
return PostCategory.builder() | ||
.post(post) | ||
.category(category) | ||
.build(); | ||
} | ||
|
||
} |
Oops, something went wrong.