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/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 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..d7a6506e --- /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.Post; +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; +}