From c4733322e782f1ac36b4aa7aa3bf271cb32d635d Mon Sep 17 00:00:00 2001 From: jinnxyoung Date: Mon, 22 Jan 2024 20:06:35 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[#6]=20feat:=20post=20class=20entity=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/post/entity/Post.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/main/java/com/gongjakso/server/domain/post/entity/Post.java diff --git a/src/main/java/com/gongjakso/server/domain/post/entity/Post.java b/src/main/java/com/gongjakso/server/domain/post/entity/Post.java new file mode 100644 index 00000000..cdcf938d --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/entity/Post.java @@ -0,0 +1,79 @@ +package com.gongjakso.server.domain.post.entity; + +import com.gongjakso.server.domain.post.enumerate.PostType; +import com.gongjakso.server.global.common.BaseTimeEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@Table(name = "post") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Post extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "post_id", nullable = false, columnDefinition = "varchar(20)") + private Long postId; + + @Column(name = "title", nullable = false, columnDefinition = "varchar(20)") + private String title; + + @Column(name = "contents", nullable = false, columnDefinition = "varchar(500)") + private String contents; + + @Enumerated(EnumType.STRING) + private PostType status; + + @Column(name = "start_date", nullable = false) + private LocalDateTime startDate; + + @Column(name = "end_date", nullable = false) + private LocalDateTime endDate; + + @Column(name = "max_person", nullable = false, columnDefinition = "int") + private Long maxPerson; + + @Enumerated(EnumType.STRING) + @Column(name = "meeting_method", nullable = true, columnDefinition = "varchar(10)") + private PostType meetingMethod; + + @Column(name = "meeting_area", nullable = true, columnDefinition = "varchar(100)") + private String meetingArea; + + @Column(name = "question_method", nullable = false, columnDefinition = "tinyint") + private boolean questionMethod; + + @Column(name = "question_link", nullable = false, columnDefinition = "text") + private String questionLink; + + @Column(name = "is_project", nullable = false, columnDefinition = "tinyint") + private boolean isProject; + + @Builder + public Post(Long postId, String title, String contents, PostType status, LocalDateTime startDate, LocalDateTime endDate, Long maxPerson, PostType meetingMethod, String meetingArea, boolean questionMethod, String questionLink, boolean isProject) { + this.postId = postId; + this.title = title; + this.contents = contents; + this.status = status; + this.startDate = startDate; + this.endDate = endDate; + this.maxPerson = maxPerson; + this.meetingMethod = meetingMethod; + this.meetingArea = meetingArea; + this.questionMethod = questionMethod; + this.questionLink = questionLink; + this.isProject = isProject; + } +} \ No newline at end of file From c720e90586c5fc67960a1f89e7eea56016ac95b2 Mon Sep 17 00:00:00 2001 From: jinnxyoung Date: Mon, 22 Jan 2024 20:11:06 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[#6]=20feat:=20post=20class=20entity=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/controller/PostController.java | 40 +++++++++++++++++++ .../server/domain/post/dto/PostReq.java | 4 ++ .../server/domain/post/dto/PostRes.java | 4 ++ .../domain/post/enumerate/PostType.java | 5 +++ .../post/repository/PostRepository.java | 8 ++++ .../domain/post/service/PostService.java | 13 ++++++ 6 files changed, 74 insertions(+) create mode 100644 src/main/java/com/gongjakso/server/domain/post/controller/PostController.java create mode 100644 src/main/java/com/gongjakso/server/domain/post/dto/PostReq.java create mode 100644 src/main/java/com/gongjakso/server/domain/post/dto/PostRes.java create mode 100644 src/main/java/com/gongjakso/server/domain/post/enumerate/PostType.java create mode 100644 src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java create mode 100644 src/main/java/com/gongjakso/server/domain/post/service/PostService.java diff --git a/src/main/java/com/gongjakso/server/domain/post/controller/PostController.java b/src/main/java/com/gongjakso/server/domain/post/controller/PostController.java new file mode 100644 index 00000000..b5d8509a --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/controller/PostController.java @@ -0,0 +1,40 @@ +package com.gongjakso.server.domain.post.controller; + +import com.gongjakso.server.domain.post.service.PostService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +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.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/post") +@Tag(name = "Post", description = "공고 관련 API") +public class PostController { + private final PostService postService; + +// @PostMapping +// public ResponseEntity<> createPost() { +// +// } + + /** 모집글 게시(CREATE) */ +// @PostMapping("/posts") +// public ResponseEntity createPost( +// @RequestBody @Validated PostCreationRequest request, +// @AuthenticationPrincipal OAuth2User user) { +// +// String email = user.getName(); +// Post post = postService.createPost(request, email); +// keywordService.addKeywords(post, request); +// +// return ResponseEntity.ok( +// PostCreationResponse.builder() +// .id(post.getId()) +// .title(post.getThumbnail().getTitle()) +// .createdDate(post.getCreatedDate()) +// .build()); +// } +} diff --git a/src/main/java/com/gongjakso/server/domain/post/dto/PostReq.java b/src/main/java/com/gongjakso/server/domain/post/dto/PostReq.java new file mode 100644 index 00000000..bc50ffcf --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/dto/PostReq.java @@ -0,0 +1,4 @@ +package com.gongjakso.server.domain.post.dto; + +public class PostReq { +} diff --git a/src/main/java/com/gongjakso/server/domain/post/dto/PostRes.java b/src/main/java/com/gongjakso/server/domain/post/dto/PostRes.java new file mode 100644 index 00000000..53f55c96 --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/dto/PostRes.java @@ -0,0 +1,4 @@ +package com.gongjakso.server.domain.post.dto; + +public class PostRes { +} diff --git a/src/main/java/com/gongjakso/server/domain/post/enumerate/PostType.java b/src/main/java/com/gongjakso/server/domain/post/enumerate/PostType.java new file mode 100644 index 00000000..e3fa74cb --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/enumerate/PostType.java @@ -0,0 +1,5 @@ +package com.gongjakso.server.domain.post.enumerate; + +public enum PostType { + STATUS, MEETING_METHOD +} diff --git a/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java b/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java new file mode 100644 index 00000000..1c5fbc46 --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java @@ -0,0 +1,8 @@ +package com.gongjakso.server.domain.post.repository; + +import com.gongjakso.server.domain.post.entity.Contest; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PostRepository extends JpaRepository { + +} diff --git a/src/main/java/com/gongjakso/server/domain/post/service/PostService.java b/src/main/java/com/gongjakso/server/domain/post/service/PostService.java new file mode 100644 index 00000000..16aa6f0d --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/service/PostService.java @@ -0,0 +1,13 @@ +package com.gongjakso.server.domain.post.service; + +import com.gongjakso.server.domain.post.repository.PostRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(readOnly = true) +@RequiredArgsConstructor +public class PostService { + private final PostRepository postRepository; +} From 9000be036d5fc8a8f219782c799d8640b5b99a2a Mon Sep 17 00:00:00 2001 From: jinnxyoung Date: Mon, 22 Jan 2024 20:06:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[#6]=20feat:=20post=20class=20entity=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/post/entity/Post.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/main/java/com/gongjakso/server/domain/post/entity/Post.java diff --git a/src/main/java/com/gongjakso/server/domain/post/entity/Post.java b/src/main/java/com/gongjakso/server/domain/post/entity/Post.java new file mode 100644 index 00000000..cdcf938d --- /dev/null +++ b/src/main/java/com/gongjakso/server/domain/post/entity/Post.java @@ -0,0 +1,79 @@ +package com.gongjakso.server.domain.post.entity; + +import com.gongjakso.server.domain.post.enumerate.PostType; +import com.gongjakso.server.global.common.BaseTimeEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.time.LocalDateTime; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@Table(name = "post") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Post extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "post_id", nullable = false, columnDefinition = "varchar(20)") + private Long postId; + + @Column(name = "title", nullable = false, columnDefinition = "varchar(20)") + private String title; + + @Column(name = "contents", nullable = false, columnDefinition = "varchar(500)") + private String contents; + + @Enumerated(EnumType.STRING) + private PostType status; + + @Column(name = "start_date", nullable = false) + private LocalDateTime startDate; + + @Column(name = "end_date", nullable = false) + private LocalDateTime endDate; + + @Column(name = "max_person", nullable = false, columnDefinition = "int") + private Long maxPerson; + + @Enumerated(EnumType.STRING) + @Column(name = "meeting_method", nullable = true, columnDefinition = "varchar(10)") + private PostType meetingMethod; + + @Column(name = "meeting_area", nullable = true, columnDefinition = "varchar(100)") + private String meetingArea; + + @Column(name = "question_method", nullable = false, columnDefinition = "tinyint") + private boolean questionMethod; + + @Column(name = "question_link", nullable = false, columnDefinition = "text") + private String questionLink; + + @Column(name = "is_project", nullable = false, columnDefinition = "tinyint") + private boolean isProject; + + @Builder + public Post(Long postId, String title, String contents, PostType status, LocalDateTime startDate, LocalDateTime endDate, Long maxPerson, PostType meetingMethod, String meetingArea, boolean questionMethod, String questionLink, boolean isProject) { + this.postId = postId; + this.title = title; + this.contents = contents; + this.status = status; + this.startDate = startDate; + this.endDate = endDate; + this.maxPerson = maxPerson; + this.meetingMethod = meetingMethod; + this.meetingArea = meetingArea; + this.questionMethod = questionMethod; + this.questionLink = questionLink; + this.isProject = isProject; + } +} \ No newline at end of file From e6b7025354df4e6c6be741f2e410e0b6d09a98e8 Mon Sep 17 00:00:00 2001 From: jinnxyoung Date: Mon, 22 Jan 2024 20:21:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[#6]=20fix:=20PostRepository=20import=20?= =?UTF-8?q?=EC=98=A4=ED=83=88=EC=9E=90=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/domain/post/repository/PostRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java b/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java index 1c5fbc46..d7a6506e 100644 --- a/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java +++ b/src/main/java/com/gongjakso/server/domain/post/repository/PostRepository.java @@ -1,8 +1,8 @@ package com.gongjakso.server.domain.post.repository; -import com.gongjakso.server.domain.post.entity.Contest; +import com.gongjakso.server.domain.post.entity.Post; import org.springframework.data.jpa.repository.JpaRepository; -public interface PostRepository extends JpaRepository { +public interface PostRepository extends JpaRepository { }