// Path: src/main/java/com/digag/domain/Article.java
// @Entity
// public class Article implements Serializable {
// 
//     private static final long serialVersionUID = 2L;
// 
//     @Id
//     @GeneratedValue(generator = "paymentableGenerator")
//     @GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
//     private String id;
// 
//     @Column(nullable = false, columnDefinition = "TEXT")
//     private String content;
// 
//     private Date updatedAt;
// 
//     private Date createdAt;
// 
//     @OneToOne(mappedBy="article", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
//     private Entry entry;
// 
//     public Article() {
//     }
// 
//     @Override
//     public String toString() {
//         return "Article{" +
//                 "id='" + id + '\'' +
//                 ", content='" + content + '\'' +
//                 ", updatedAt=" + updatedAt +
//                 ", createdAt=" + createdAt +
//                 '}';
//     }
// 
//     public Entry getEntry() {
//         return entry;
//     }
// 
//     public void setEntry(Entry entry) {
//         this.entry = entry;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public Date getUpdatedAt() {
//         return updatedAt;
//     }
// 
//     public void setUpdatedAt(Date updatedAt) {
//         this.updatedAt = updatedAt;
//     }
// 
//     public Date getCreatedAt() {
//         return createdAt;
//     }
// 
//     public void setCreatedAt(Date createdAt) {
//         this.createdAt = createdAt;
//     }
// }
// 
// Path: src/main/java/com/digag/domain/Repository/ArticleRepository.java
// @RepositoryRestResource
// public interface ArticleRepository extends JpaRepository<Article,String> {
// }
// 
// Path: src/main/java/com/digag/util/JsonResult.java
// public class JsonResult<T> {
// 
//     private final boolean success;
// 
//     private final T data;
// 
//     private final String error;
// 
//     private JsonResult(JsonResultBuilder<T> builder) {
//         this.success = builder.success;
//         this.data = builder.data;
//         this.error = builder.error;
//     }
// 
//     public static <T>JsonResult.JsonResultBuilder<T> builder(){
//         return new JsonResultBuilder<>();
//     }
// 
//     public boolean isSuccess() {
//         return success;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public String getError() {
//         return error;
//     }
// 
//     @Override
//     public String toString() {
//         return "JsonResult{" +
//                 "success=" + success +
//                 ", data=" + data +
//                 ", error='" + error + '\'' +
//                 '}';
//     }
// 
//     public static final class JsonResultBuilder<T> {
// 
//         private boolean success;
// 
//         private T data;
// 
//         private String error;
// 
//         private JsonResultBuilder() {
// 
//         }
// 
//         public JsonResultBuilder error(String error) {
//             this.error = error;
//             this.success = false;
//             return this;
//         }
// 
//         public JsonResultBuilder data(T data) {
//             this.data = data;
//             this.success = true;
//             return this;
//         }
// 
//         public JsonResult build() {
//             return new JsonResult<>(this);
//         }
//     }
// 
//     public static void main(String[] args) {
//         System.out.print(JsonResult.<String>builder().data("asd").build().toString());
//     }
// 
// }


import com.digag.domain.Article;
import com.digag.domain.Repository.ArticleRepository;
import com.digag.util.JsonResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;

package com.digag.web;



/**
 * Created by Yuicon on 2017/7/11.
 * https://github.com/Yuicon
 */
@RestController
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleRepository articleRepository;

    @ApiOperation(value="获取文章列表")
    @RequestMapping(method = RequestMethod.GET)
    public JsonResult<List<Article>> getArticles() {
        return JsonResult.<List<Article>>builder().data(articleRepository.findAll()).build();
    }

    @ApiOperation(value="创建文章")
    @ApiImplicitParam(name = "article", value = "文章", required = true,

// Path: src/main/java/com/digag/domain/Article.java
// @Entity
// public class Article implements Serializable {
// 
//     private static final long serialVersionUID = 2L;
// 
//     @Id
//     @GeneratedValue(generator = "paymentableGenerator")
//     @GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
//     private String id;
// 
//     @Column(nullable = false, columnDefinition = "TEXT")
//     private String content;
// 
//     private Date updatedAt;
// 
//     private Date createdAt;
// 
//     @OneToOne(mappedBy="article", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
//     private Entry entry;
// 
//     public Article() {
//     }
// 
//     @Override
//     public String toString() {
//         return "Article{" +
//                 "id='" + id + '\'' +
//                 ", content='" + content + '\'' +
//                 ", updatedAt=" + updatedAt +
//                 ", createdAt=" + createdAt +
//                 '}';
//     }
// 
//     public Entry getEntry() {
//         return entry;
//     }
// 
//     public void setEntry(Entry entry) {
//         this.entry = entry;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public Date getUpdatedAt() {
//         return updatedAt;
//     }
// 
//     public void setUpdatedAt(Date updatedAt) {
//         this.updatedAt = updatedAt;
//     }
// 
//     public Date getCreatedAt() {
//         return createdAt;
//     }
// 
//     public void setCreatedAt(Date createdAt) {
//         this.createdAt = createdAt;
//     }
// }
// 
// Path: src/main/java/com/digag/domain/Repository/ArticleRepository.java
// @RepositoryRestResource
// public interface ArticleRepository extends JpaRepository<Article,String> {
// }
// 
// Path: src/main/java/com/digag/util/JsonResult.java
// public class JsonResult<T> {
// 
//     private final boolean success;
// 
//     private final T data;
// 
//     private final String error;
// 
//     private JsonResult(JsonResultBuilder<T> builder) {
//         this.success = builder.success;
//         this.data = builder.data;
//         this.error = builder.error;
//     }
// 
//     public static <T>JsonResult.JsonResultBuilder<T> builder(){
//         return new JsonResultBuilder<>();
//     }
// 
//     public boolean isSuccess() {
//         return success;
//     }
// 
//     public T getData() {
//         return data;
//     }
// 
//     public String getError() {
//         return error;
//     }
// 
//     @Override
//     public String toString() {
//         return "JsonResult{" +
//                 "success=" + success +
//                 ", data=" + data +
//                 ", error='" + error + '\'' +
//                 '}';
//     }
// 
//     public static final class JsonResultBuilder<T> {
// 
//         private boolean success;
// 
//         private T data;
// 
//         private String error;
// 
//         private JsonResultBuilder() {
// 
//         }
// 
//         public JsonResultBuilder error(String error) {
//             this.error = error;
//             this.success = false;
//             return this;
//         }
// 
//         public JsonResultBuilder data(T data) {
//             this.data = data;
//             this.success = true;
//             return this;
//         }
// 
//         public JsonResult build() {
//             return new JsonResult<>(this);
//         }
//     }
// 
//     public static void main(String[] args) {
//         System.out.print(JsonResult.<String>builder().data("asd").build().toString());
//     }
// 
// }


// Path: src/main/java/com/digag/web/ArticleController.java
import com.digag.domain.Article;
import com.digag.domain.Repository.ArticleRepository;
import com.digag.util.JsonResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;

package com.digag.web;



/**
 * Created by Yuicon on 2017/7/11.
 * https://github.com/Yuicon
 */
@RestController
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleRepository articleRepository;

    @ApiOperation(value="获取文章列表")
    @RequestMapping(method = RequestMethod.GET)
    public JsonResult<List<Article>> getArticles() {
        return JsonResult.<List<Article>>builder().data(articleRepository.findAll()).build();
    }

    @ApiOperation(value="创建文章")
    @ApiImplicitParam(name = "article", value = "文章", required = true,

            dataType = "Article")
