diff options
Diffstat (limited to 'src/main/java/com')
6 files changed, 143 insertions, 0 deletions
diff --git a/src/main/java/com/blog/web/controllers/ArticleController.java b/src/main/java/com/blog/web/controllers/ArticleController.java new file mode 100644 index 0000000..3c86ea3 --- /dev/null +++ b/src/main/java/com/blog/web/controllers/ArticleController.java @@ -0,0 +1,33 @@ +package com.blog.web.controllers; + +import com.blog.web.dto.ArticleDto; +import com.blog.web.models.Article; +import com.blog.web.services.ArticleService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@Controller +public class ArticleController { + private ArticleService articleService; + + public ArticleController(ArticleService articleService) { + this.articleService = articleService; + } + + @GetMapping("/") + public String listArticles(Model model) { + List<ArticleDto> articles = articleService.findAllArticles(); + model.addAttribute("articles", articles); + return "index"; + } + + @GetMapping("/articles/new") + public String createArticleForm(Model model) { + Article article = new Article(); + model.addAttribute("article", article); + return "articles/new"; + } +} diff --git a/src/main/java/com/blog/web/dto/ArticleDto.java b/src/main/java/com/blog/web/dto/ArticleDto.java new file mode 100644 index 0000000..ffe7926 --- /dev/null +++ b/src/main/java/com/blog/web/dto/ArticleDto.java @@ -0,0 +1,27 @@ +package com.blog.web.dto; + +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Data; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.time.LocalDateTime; + +@Data +@Builder +public class ArticleDto { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String photoUrl; + private String content; + @CreationTimestamp + private LocalDateTime createdOn; + @UpdateTimestamp + private LocalDateTime updatedOn; + +} diff --git a/src/main/java/com/blog/web/models/Article.java b/src/main/java/com/blog/web/models/Article.java new file mode 100644 index 0000000..5d4566f --- /dev/null +++ b/src/main/java/com/blog/web/models/Article.java @@ -0,0 +1,30 @@ +package com.blog.web.models; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import jakarta.persistence.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Entity +public class Article { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String photoUrl; + private String content; + @CreationTimestamp + private LocalDateTime createdOn; + @UpdateTimestamp + private LocalDateTime updatedOn; +} diff --git a/src/main/java/com/blog/web/repository/ArticleRepository.java b/src/main/java/com/blog/web/repository/ArticleRepository.java new file mode 100644 index 0000000..c7e8c04 --- /dev/null +++ b/src/main/java/com/blog/web/repository/ArticleRepository.java @@ -0,0 +1,8 @@ +package com.blog.web.repository; + +import com.blog.web.models.Article; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ArticleRepository extends JpaRepository<Article, Long> { + +} diff --git a/src/main/java/com/blog/web/services/ArticleService.java b/src/main/java/com/blog/web/services/ArticleService.java new file mode 100644 index 0000000..c1b28e6 --- /dev/null +++ b/src/main/java/com/blog/web/services/ArticleService.java @@ -0,0 +1,9 @@ +package com.blog.web.services; + +import com.blog.web.dto.ArticleDto; + +import java.util.List; + +public interface ArticleService { + List<ArticleDto> findAllArticles(); +} diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java new file mode 100644 index 0000000..2d3f253 --- /dev/null +++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java @@ -0,0 +1,36 @@ +package com.blog.web.services.impl; + +import com.blog.web.dto.ArticleDto; +import com.blog.web.models.Article; +import com.blog.web.repository.ArticleRepository; +import com.blog.web.services.ArticleService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ArticleServiceImpl implements ArticleService { + public ArticleServiceImpl(com.blog.web.repository.ArticleRepository articleRepository) { + this.articleRepository = articleRepository; + } + + private ArticleRepository articleRepository; + + @Override + public List<ArticleDto> findAllArticles() { + List<Article> articles = articleRepository.findAll(); + return articles.stream().map(this::mapToArticleDto).collect(Collectors.toList()); + } + + private ArticleDto mapToArticleDto(Article article) { + return ArticleDto.builder() + .id(article.getId()) + .title(article.getTitle()) + .photoUrl(article.getPhotoUrl()) + .content(article.getContent()) + .createdOn(article.getCreatedOn()) + .updatedOn(article.getUpdatedOn()) + .build(); + } +} |
