Skip to content

Commit

Permalink
Merge pull request #40 from UMC-5TH-HACKATHON/category/2
Browse files Browse the repository at this point in the history
Category/2
  • Loading branch information
yerimm99 authored Jan 2, 2024
2 parents 6baba0a + c69625a commit f38bc83
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 4 deletions.
18 changes: 18 additions & 0 deletions src/main/java/umc/hackathon/chagok/entity/Category.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,37 @@
package umc.hackathon.chagok.entity;

import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.NoArgsConstructor;

@Entity
@Getter
@AllArgsConstructor
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Category extends BaseEntity{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@JoinColumn(name = "member_id")
@ManyToOne(fetch = FetchType.LAZY)
private Member member;

public void setMember(Member member){
this.member = member;
}

private String categoryName;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import umc.hackathon.chagok.apiPayload.code.status.ErrorStatus;
import umc.hackathon.chagok.apiPayload.exception.GeneralException;
import umc.hackathon.chagok.entity.Category;
Expand Down Expand Up @@ -127,4 +129,5 @@ public Post findPost(Long postId){
}
);
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
package umc.hackathon.chagok.service.categoryService;

import java.util.List;
import umc.hackathon.chagok.entity.Category;
import umc.hackathon.chagok.web.dto.CategoryRequest;
import umc.hackathon.chagok.web.dto.CategoryResponse.CategoryDTO;

public interface CategoryService {


public Category createCategory(Long memberId, CategoryRequest.CreateCategoryDto request);
public Category findCategory(Long categoryId);

public List<Category> findAllCategory();

public List<CategoryDTO> getCategories();
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
package umc.hackathon.chagok.service.categoryService;

import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import umc.hackathon.chagok.apiPayload.code.status.ErrorStatus;
import umc.hackathon.chagok.apiPayload.exception.GeneralException;
import umc.hackathon.chagok.entity.Category;
import umc.hackathon.chagok.entity.Member;
import umc.hackathon.chagok.repository.CategoryRepository;
import umc.hackathon.chagok.service.MemberService.MemberService;
import umc.hackathon.chagok.web.dto.CategoryRequest;
import umc.hackathon.chagok.web.dto.CategoryResponse;
import umc.hackathon.chagok.web.dto.CategoryResponse.CategoryDTO;

@Service
@RequiredArgsConstructor
public class CategoryServiceImpl implements CategoryService{

private final CategoryRepository categoryRepository;
private final MemberService memberService;

@Override
public Category findCategory(Long categoryId) {
Expand All @@ -21,4 +30,40 @@ public Category findCategory(Long categoryId) {
}
);
}
@Override
public List<Category> findAllCategory(){
return categoryRepository.findAll();
}

public static CategoryResponse.CategoryDTO toCategoryDTO(Category category) {
return CategoryResponse.CategoryDTO.builder()
.id(category.getId())
.name(category.getCategoryName())
.build();
}

@Override
public List<CategoryDTO> getCategories() {
List<Category> categories = findAllCategory();
List<CategoryDTO> categoryDTOS = new ArrayList<>();
for(Category c : categories) {
categoryDTOS.add(toCategoryDTO(c));
}
return categoryDTOS;
}

@Transactional
public Category createCategory(Long memberId, CategoryRequest.CreateCategoryDto request) {
Category newCategory = Category.builder()
.categoryName(request.getName())
.build();

Member member = memberService.findMember(memberId);

newCategory.setMember(member);

categoryRepository.save(newCategory);

return newCategory;
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
package umc.hackathon.chagok.web.controller;


import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import umc.hackathon.chagok.apiPayload.ApiResponse;
import umc.hackathon.chagok.service.PostService.PostService;
import umc.hackathon.chagok.service.categoryService.CategoryService;
import umc.hackathon.chagok.web.dto.CategoryRequest;
import umc.hackathon.chagok.web.dto.CategoryResponse;
import umc.hackathon.chagok.web.dto.CategoryResponse.CategoryDTO;
import umc.hackathon.chagok.web.dto.PostRequest;
import umc.hackathon.chagok.converter.PostConverter;
import umc.hackathon.chagok.entity.Post;
import umc.hackathon.chagok.web.dto.PostResponse;

import java.util.List;
import umc.hackathon.chagok.web.dto.PostResponse;


import javax.validation.constraints.Null;

Expand All @@ -22,6 +24,7 @@
public class PostController {

private final PostService postService;
private final CategoryService categoryService;

// TIL 생성하기
@PostMapping("")
Expand All @@ -32,6 +35,22 @@ public ApiResponse<Null> createPost(@RequestHeader(name = "memberId") Long membe
return ApiResponse.onSuccess(null);
}

@RequestMapping(value="/categories" , method= RequestMethod.GET)
public ApiResponse <List<CategoryDTO>> getCategories(){

List<CategoryResponse.CategoryDTO> resCategories = categoryService.getCategories();

return ApiResponse.onSuccess(resCategories);
}

@PostMapping("/categories")
public ApiResponse createCategory(@RequestHeader(name = "memberId") Long memberId, @RequestBody CategoryRequest.CreateCategoryDto request){

categoryService.createCategory(memberId, request);

return ApiResponse.onSuccess(null);
}

// TIL 수정하기
@PutMapping("/{postId}")
public ApiResponse<Null> updatePost(@PathVariable(name = "postId")Long postId, @RequestBody PostRequest.UpdatePostDTO request){
Expand All @@ -49,7 +68,7 @@ public ApiResponse<Null> deletePost(@PathVariable(name = "postId")Long postId){

return ApiResponse.onSuccess(null);
}

@GetMapping("/")
public ApiResponse<PostResponse.PostPreviewListDTO> getPostList(){
List<Post> postList = postService.getPostList();
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/umc/hackathon/chagok/web/dto/CategoryRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package umc.hackathon.chagok.web.dto;

import lombok.Getter;
import lombok.NoArgsConstructor;

public class CategoryRequest {
@Getter
public static class CreateCategoryDto{
String name;
}
}
17 changes: 17 additions & 0 deletions src/main/java/umc/hackathon/chagok/web/dto/CategoryResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package umc.hackathon.chagok.web.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

public class CategoryResponse {
@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static class CategoryDTO{
Long id;
String name;
}
}

0 comments on commit f38bc83

Please sign in to comment.