feat : Article Service Init and Implement Article Controller

This commit is contained in:
kms
2022-10-16 13:29:01 +09:00
parent 20857a54b7
commit e47e837ac0
7 changed files with 128 additions and 0 deletions

View File

@@ -3,8 +3,10 @@ package com.io.realworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
@EnableJpaAuditing
public class RealworldApplication {
public static void main(String[] args) {

View File

@@ -0,0 +1,29 @@
package com.io.realworld.domain.aggregate.article.controller;
import com.io.realworld.domain.aggregate.article.dto.Article;
import com.io.realworld.domain.aggregate.article.dto.ResponseArticle;
import com.io.realworld.domain.aggregate.article.service.ArticleService;
import com.io.realworld.domain.aggregate.user.dto.UserAuth;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/articles")
public class ArticleController {
private final ArticleService articleService;
public ArticleController(ArticleService articleService){
this.articleService = articleService;
}
@PostMapping
public ResponseArticle createArticle(@AuthenticationPrincipal UserAuth userAuth, @RequestBody Article article){
return articleService.createArticle(userAuth,article);
}
}

View File

@@ -0,0 +1,20 @@
package com.io.realworld.domain.aggregate.article.dto;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.Builder;
import lombok.Getter;
import java.util.List;
@Builder
@Getter
@JsonTypeName("article")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
public class Article {
private String title;
private String description;
private String body;
private List<String> tagList;
}

View File

@@ -0,0 +1,4 @@
package com.io.realworld.domain.aggregate.article.dto;
public class ResponseArticle {
}

View File

@@ -0,0 +1,47 @@
package com.io.realworld.domain.aggregate.article.entity;
import com.io.realworld.domain.aggregate.user.entity.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Builder
@Getter
@NoArgsConstructor
@Table(name = "articles")
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String slug;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String description;
@Column(nullable = false)
private String body;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(nullable = false)
private User user;
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}

View File

@@ -0,0 +1,12 @@
package com.io.realworld.domain.aggregate.article.service;
import com.io.realworld.domain.aggregate.article.dto.Article;
import com.io.realworld.domain.aggregate.article.dto.ResponseArticle;
import com.io.realworld.domain.aggregate.user.dto.UserAuth;
import org.springframework.stereotype.Service;
@Service
public interface ArticleService {
ResponseArticle createArticle(UserAuth userAuth, Article article);
}

View File

@@ -0,0 +1,14 @@
package com.io.realworld.domain.aggregate.article.service;
import com.io.realworld.domain.aggregate.article.dto.Article;
import com.io.realworld.domain.aggregate.article.dto.ResponseArticle;
import com.io.realworld.domain.aggregate.user.dto.UserAuth;
public class ArticleServiceImpl implements ArticleService{
@Override
public ResponseArticle createArticle(UserAuth userAuth, Article article) {
return null;
}
}