feat : Article Service Init and Implement Article Controller
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.io.realworld.domain.aggregate.article.dto;
|
||||
|
||||
public class ResponseArticle {
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user