diff --git a/src/main/java/umc/spring/board/conroller/BoardController.java b/src/main/java/umc/spring/board/conroller/BoardController.java deleted file mode 100644 index c82ace7c41d89c8c6ba1bc5c50afb2e6e56fbccf..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/conroller/BoardController.java +++ /dev/null @@ -1,35 +0,0 @@ -package umc.spring.board.conroller; - -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; -import umc.spring.board.domain.Board; -import umc.spring.board.dto.BoardRequestDto; -import umc.spring.board.dto.BoardResponseDto; -import umc.spring.board.repository.BoardRepository; - -import java.util.List; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/posts") -public class BoardController { - - private final BoardRepository boardRepository; - - @PostMapping("/upload") - public void upload(@RequestBody BoardRequestDto boardDto){ - System.out.println(boardDto); - Board board = boardDto.toBoard(); - boardRepository.save(board); - } - - @GetMapping("/") - public List<BoardResponseDto> getPosts(){ - return boardRepository.findAll().stream().map(BoardResponseDto::toDto).toList(); - } - - @GetMapping("/{id}") - public BoardResponseDto getPost(@PathVariable(name="id") Long boardId){ - return BoardResponseDto.toDto(boardRepository.findById(boardId).orElseThrow(RuntimeException::new)); - } -} diff --git a/src/main/java/umc/spring/board/domain/Board.java b/src/main/java/umc/spring/board/domain/Board.java deleted file mode 100644 index fdf04c7cb437ef347cee814e412f7a747afd2fbc..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/domain/Board.java +++ /dev/null @@ -1,39 +0,0 @@ -package umc.spring.board.domain; - -import jakarta.persistence.*; -import lombok.*; -import org.hibernate.annotations.CreationTimestamp; -import umc.spring.member.domain.Member; - -import java.sql.Date; - -@Entity -@Getter -@Setter -public class Board { - - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - private String title; - - private String author; - - private String body; - - @CreationTimestamp - private Date date; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "member_id") - Member member; - - protected Board(){} - - @Builder - public Board(String title, String author, String body) { - this.title = title; - this.author = author; - this.body = body; - } -} diff --git a/src/main/java/umc/spring/board/dto/BoardRequestDto.java b/src/main/java/umc/spring/board/dto/BoardRequestDto.java deleted file mode 100644 index 37e6818cc57bd6986d86e827194f59f737c041d7..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/dto/BoardRequestDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package umc.spring.board.dto; - - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; -import umc.spring.board.domain.Board; - -@Getter -@Setter -public class BoardRequestDto { - - private String title; - - private String author; - - private String body; - - @Builder - public BoardRequestDto(String title, String author, String body) { - this.title = title; - this.author = author; - this.body = body; - } - - public Board toBoard() { - return Board.builder() - .author(this.getAuthor()) - .title(this.getTitle()) - .body(this.getBody()) - .build(); - } -} diff --git a/src/main/java/umc/spring/board/dto/BoardResponseDto.java b/src/main/java/umc/spring/board/dto/BoardResponseDto.java deleted file mode 100644 index 29950a4417e97f229e4998542113e2fc14a7ac4e..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/dto/BoardResponseDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package umc.spring.board.dto; - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; -import umc.spring.board.domain.Board; - -@Getter -@Setter -public class BoardResponseDto { - - private Long id; - - private String title; - - private String author; - - private String body; - - @Builder - public BoardResponseDto(Long id, String title, String author, String body) { - this.id = id; - this.title = title; - this.author = author; - this.body = body; - } - - public static BoardResponseDto toDto(Board board){ - return BoardResponseDto.builder() - .id(board.getId()) - .body(board.getBody()) - .title(board.getTitle()) - .author(board.getAuthor()) - .build(); - } -} diff --git a/src/main/java/umc/spring/board/repository/BoardRepository.java b/src/main/java/umc/spring/board/repository/BoardRepository.java deleted file mode 100644 index 4c9b4b74e72e1ba6a8788a755a085f5d0dcea4c3..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/repository/BoardRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package umc.spring.board.repository; - -import org.springframework.data.jpa.repository.JpaRepository; -import umc.spring.board.domain.Board; - -import java.util.Optional; - -public interface BoardRepository extends JpaRepository<Board, Long> { - Optional<Board> findById(Long id); -} \ No newline at end of file diff --git a/src/main/java/umc/spring/board/service/BoardService.java b/src/main/java/umc/spring/board/service/BoardService.java deleted file mode 100644 index 82a99ffa3d474b1592ead89e43ee740060b154aa..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/board/service/BoardService.java +++ /dev/null @@ -1,9 +0,0 @@ -package umc.spring.board.service; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional(readOnly = true) -public class BoardService { -} diff --git a/src/main/java/umc/spring/member/controller/MemberController.java b/src/main/java/umc/spring/member/controller/MemberController.java deleted file mode 100644 index 29c005aee19e7e1e6d11706f9324231d45555d56..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/member/controller/MemberController.java +++ /dev/null @@ -1,4 +0,0 @@ -package umc.spring.member.controller; - -public class MemberController { -} diff --git a/src/main/java/umc/spring/member/domain/Member.java b/src/main/java/umc/spring/member/domain/Member.java deleted file mode 100644 index 6b228957e1f36ba1fcd58bd3aa1afa68ef6d25be..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/member/domain/Member.java +++ /dev/null @@ -1,16 +0,0 @@ -package umc.spring.member.domain; - -import jakarta.persistence.*; -import lombok.Getter; - -@Entity -@Getter -public class Member { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - private String username; - -} diff --git a/src/main/java/umc/spring/member/dto/MemberRequestDto.java b/src/main/java/umc/spring/member/dto/MemberRequestDto.java deleted file mode 100644 index e7e87cd5666032d2bb0934193ca06ed9b1cbc9f8..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/member/dto/MemberRequestDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package umc.spring.member.dto; - -public class MemberRequestDto { -} diff --git a/src/main/java/umc/spring/member/repository/MemberRepository.java b/src/main/java/umc/spring/member/repository/MemberRepository.java deleted file mode 100644 index 8d22cc92a864bc5f2ca22bfecfd9d6cbbeb4e3be..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/member/repository/MemberRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package umc.spring.member.repository; - -import org.springframework.data.jpa.repository.JpaRepository; -import umc.spring.member.domain.Member; - -public interface MemberRepository extends JpaRepository<Long, Member> { -} diff --git a/src/main/java/umc/spring/member/service/MemberService.java b/src/main/java/umc/spring/member/service/MemberService.java deleted file mode 100644 index 795b0162e686a5262fb4157570d6d771e37dbbdb..0000000000000000000000000000000000000000 --- a/src/main/java/umc/spring/member/service/MemberService.java +++ /dev/null @@ -1,4 +0,0 @@ -package umc.spring.member.service; - -public class MemberService { -} diff --git a/src/main/java/umc/spring/post/controller/PostController.java b/src/main/java/umc/spring/post/controller/PostController.java new file mode 100644 index 0000000000000000000000000000000000000000..0909aca648c0e31a35a7a2fda5ca9f02f19fed5e --- /dev/null +++ b/src/main/java/umc/spring/post/controller/PostController.java @@ -0,0 +1,33 @@ +package com.umc.post.controller; + +import com.umc.post.data.dto.PostDto; +import com.umc.post.data.entity.Post; +import com.umc.post.service.service.PostService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/posts") +public class PostController { + + private final PostService postService; + + public PostController(PostService postService) { + this.postService = postService; + } + + @PostMapping("/upload") + public void upload(@RequestBody PostDto postDto){ + postService.upload(postDto); + } + @GetMapping("") + public List<Post> getAllPost(){ + return postService.getAllPost(); + + } + @GetMapping("/{id}") + public Post getPostById(@PathVariable Long id){ + return postService.getPostById(id); + } +} diff --git a/src/main/java/umc/spring/post/data/dto/CommentDto.java b/src/main/java/umc/spring/post/data/dto/CommentDto.java new file mode 100644 index 0000000000000000000000000000000000000000..23567b60bb30a3f338bcc2b20e9a5d0d2e9658c0 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/CommentDto.java @@ -0,0 +1,13 @@ +package umc.spring.post.data.dto; + +import lombok.Data; + +@Data +public class CommentDto { + + private Long postId; + private Long userId; + private String author; + private String text; + +} diff --git a/src/main/java/umc/spring/post/data/dto/CommentResDto.java b/src/main/java/umc/spring/post/data/dto/CommentResDto.java new file mode 100644 index 0000000000000000000000000000000000000000..18e0d6a33dd34d7041c051d6f0362450ed8fe492 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/CommentResDto.java @@ -0,0 +1,31 @@ +package umc.spring.post.data.dto; + +import jakarta.persistence.Column; +import lombok.Builder; +import lombok.Data; +import umc.spring.post.data.entity.Comment; +import umc.spring.post.data.entity.Post; + +import java.util.Date; + +@Data +@Builder +public class CommentResDto { + private Long id; + private Long postId; + private Long userId; + private String author; + private String text; + private Date timestamp; + public static CommentResDto toDTO(Comment comment){ + + return CommentResDto.builder() + .id(comment.getId()) + .postId(comment.getPostId()) + .userId(comment.getUserId()) + .author(comment.getAuthor()) + .timestamp(comment.getTimestamp()) + .text(comment.getText()).build(); + } + +} diff --git a/src/main/java/umc/spring/post/data/dto/PostDto.java b/src/main/java/umc/spring/post/data/dto/PostDto.java new file mode 100644 index 0000000000000000000000000000000000000000..0b08be568bc8be224e3e939e50be738546d99b4a --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/PostDto.java @@ -0,0 +1,15 @@ +package umc.spring.post.data.dto; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Data +public class PostDto { + Long userId; + String title; + String author; + String body; + String image; + int likeCount; +} diff --git a/src/main/java/umc/spring/post/data/dto/PostResDto.java b/src/main/java/umc/spring/post/data/dto/PostResDto.java new file mode 100644 index 0000000000000000000000000000000000000000..48ef01fa89f5083de0cd0f76cf00652ae58d77e6 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/PostResDto.java @@ -0,0 +1,45 @@ +package umc.spring.post.data.dto; + +import jakarta.persistence.*; +import lombok.*; +import umc.spring.post.data.entity.Comment; +import umc.spring.post.data.entity.Post; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Data +@Builder +public class PostResDto { + Long id; + Long userId; + String title; + String author; + String body; + String image; + int likeCount; + Date createdTime; + Date modifiedTime; + List<CommentResDto> comments; + public static PostResDto toDTO(Post post){ + List<CommentResDto> resDtos = new ArrayList<>(); + post.getComments().forEach(comment -> { + CommentResDto dto = CommentResDto.toDTO(comment); + resDtos.add(dto); + }); + return PostResDto.builder() + .id(post.getId()) + .userId(post.getUserId()) + .title(post.getTitle()) + .author(post.getAuthor()) + .body(post.getBody()) + .image(post.getImage()) + .likeCount(post.getLikeCount()) + .createdTime(post.getCreatedTime()) + .modifiedTime(post.getModifiedTime()) + .comments(resDtos).build(); + } + + +} diff --git a/src/main/java/umc/spring/post/data/dto/UserInfoDto.java b/src/main/java/umc/spring/post/data/dto/UserInfoDto.java new file mode 100644 index 0000000000000000000000000000000000000000..bd96f34f7c68f7c9f9595e0d584eb977508201b6 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/UserInfoDto.java @@ -0,0 +1,14 @@ +package umc.spring.post.data.dto; + +import lombok.*; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@ToString +@Builder +public class UserInfoDto { + private String userId; + private String memberRole; + +} \ No newline at end of file diff --git a/src/main/java/umc/spring/post/data/dto/UserJoinDto.java b/src/main/java/umc/spring/post/data/dto/UserJoinDto.java new file mode 100644 index 0000000000000000000000000000000000000000..a6701bdb5684ff513155523db1deb89f5f0c4f99 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/UserJoinDto.java @@ -0,0 +1,10 @@ +package umc.spring.post.data.dto; + +import lombok.Data; + +@Data +public class UserJoinDto { + private String userId; + private String password; + private String userName; +} \ No newline at end of file diff --git a/src/main/java/umc/spring/post/data/dto/UserLoginDto.java b/src/main/java/umc/spring/post/data/dto/UserLoginDto.java new file mode 100644 index 0000000000000000000000000000000000000000..24d523d76942bef96ec20648f0dcffc5dd569848 --- /dev/null +++ b/src/main/java/umc/spring/post/data/dto/UserLoginDto.java @@ -0,0 +1,9 @@ +package umc.spring.post.data.dto; + +import lombok.Data; + +@Data +public class UserLoginDto { + String userId; + String password; +} diff --git a/src/main/java/umc/spring/post/data/entity/Post.java b/src/main/java/umc/spring/post/data/entity/Post.java new file mode 100644 index 0000000000000000000000000000000000000000..a3b743cbe3979905455cceacb528e5132d5efcdc --- /dev/null +++ b/src/main/java/umc/spring/post/data/entity/Post.java @@ -0,0 +1,30 @@ +package com.umc.post.data.entity; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Entity +@Table(name = "Post") +@Getter @Setter +public class Post{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(nullable = false) + private Long id; + + @Column(nullable = false) + private String title; + + @Column(nullable = false) + private String author; + + @Column(nullable = false) + private String body; + + @Column(nullable = false) + private Date timestamp; +} diff --git a/src/main/java/umc/spring/post/repository/PostRepository.java b/src/main/java/umc/spring/post/repository/PostRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..7d8540ab808d51ca2f8703e34c123ecc1a8ef231 --- /dev/null +++ b/src/main/java/umc/spring/post/repository/PostRepository.java @@ -0,0 +1,9 @@ +package umc.spring.post.repository.repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import umc.spring.post.data.entity.Post; + +public interface PostRepository extends JpaRepository<Post,Long> { + +} diff --git a/src/main/java/umc/spring/post/service/PostService.java b/src/main/java/umc/spring/post/service/PostService.java new file mode 100644 index 0000000000000000000000000000000000000000..f24774bcc84006b4b22b9df158a76cf189126a15 --- /dev/null +++ b/src/main/java/umc/spring/post/service/PostService.java @@ -0,0 +1,29 @@ +package umc.spring.post.service.service; + + +import umc.spring.post.data.dto.PostDto; +import umc.spring.post.data.entity.Post; + +import java.util.List; + +public interface PostService { + void upload(PostDto postDto); + + List<Post> getAllPost(); + + Post getPostById(Long id); + + void likeCrew(Long id); + + void dislikeCrew(Long id); + + void deletePost(Long id); + + + void editPost(PostDto postDto, Long id); + + List<Post> search(String title); + + + void createComment(Long id); +} diff --git a/src/main/java/umc/spring/post/service/PostServiceImpl.java b/src/main/java/umc/spring/post/service/PostServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..fcb0dae82baef00b3904d41e74d341e3d62f9f6a --- /dev/null +++ b/src/main/java/umc/spring/post/service/PostServiceImpl.java @@ -0,0 +1,99 @@ +package umc.spring.post.service.service; + + +import org.springframework.stereotype.Service; +import umc.spring.post.data.dto.PostDto; +import umc.spring.post.data.entity.Post; +import umc.spring.post.repository.repository.PostRepository; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class PostServiceImpl implements PostService{ + + private final PostRepository postRepository; + + public PostServiceImpl(PostRepository postRepository) { + this.postRepository = postRepository; + } + + @Override + public void upload(PostDto postDto){ + Post post = new Post(); + setPost(postDto, post); + post.setCreatedTime((new Date())); + post.setModifiedTime(post.getCreatedTime()); + postRepository.save(post); + } + + @Override + public List<Post> getAllPost(){ + return postRepository.findAll(); + } + + + @Override + public Post getPostById(Long id){ + return postRepository.findById(id).get(); + } + + @Override + public void likeCrew(Long id) { + Post post = getPostById(id); + int likeCount = post.getLikeCount(); + post.setLikeCount(++likeCount); + } + + @Override + public void dislikeCrew(Long id) { + Post post = getPostById(id); + int likeCount = post.getLikeCount(); + if(likeCount!=0){ + post.setLikeCount(--likeCount); + } + } + + @Override + public void deletePost(Long id) { + postRepository.deleteById(id); + } + + @Override + public void editPost(PostDto postDto,Long id) { + Post post = getPostById(id); + setPost(postDto,post); + post.setModifiedTime(new Date()); + } + + @Override + public List<Post> search(String title) { + List<Post> postList = postRepository.findAll(); + List<Post> findList = new ArrayList<>(); + + postList.iterator().forEachRemaining(post->{ + if(post.getTitle().equals(title)){ + findList.add(post); + } + }); + return findList; + } + + @Override + public void createComment(Long id) { + + Post post = getPostById(id); + + post.set + + } + + private static void setPost(PostDto postDto, Post post) { + post.setTitle(postDto.getTitle()); + post.setBody(postDto.getBody()); + post.setAuthor(postDto.getAuthor()); + post.setLikeCount(postDto.getLikeCount()); + post.setImage(postDto.getImage()); + } +}