diff options
Diffstat (limited to 'src/main/java')
4 files changed, 43 insertions, 5 deletions
diff --git a/src/main/java/com/blog/web/controllers/ArticleController.java b/src/main/java/com/blog/web/controllers/ArticleController.java index 0e58877..0cdff15 100644 --- a/src/main/java/com/blog/web/controllers/ArticleController.java +++ b/src/main/java/com/blog/web/controllers/ArticleController.java @@ -7,10 +7,7 @@ import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; @@ -30,6 +27,13 @@ public class ArticleController { return "index"; } + @GetMapping("/articles/{articleId}") + public String showArticle(@PathVariable("articleId") long articleId, Model model) { + ArticleDto articleDto = articleService.findArticleById(articleId); + model.addAttribute("article", articleDto); + return "articles/show"; + } + @GetMapping("/articles/new") public String createArticleForm(Model model) { Article article = new Article(); @@ -49,6 +53,12 @@ public class ArticleController { return "redirect:/articles"; } + @GetMapping("/articles/delete/{articleId}") + public String deleteArticle(@PathVariable("articleId") Long articleId) { + articleService.delete(articleId); + return "redirect:/articles"; + } + @GetMapping("/articles/edit/{articleId}") public String editArticleForm(@PathVariable("articleId") long articleId, Model model) { ArticleDto articleDto = articleService.findArticleById(articleId); @@ -68,6 +78,13 @@ public class ArticleController { return "redirect:/articles"; } + @GetMapping("/articles/search") + public String searchArticle(@RequestParam(value = "search") String search, Model model) { + List<ArticleDto> articles = articleService.searchArticles(search); + model.addAttribute("articles", articles); + return "index"; + } + @GetMapping("/articles") public String getArticles() { return "redirect:/"; diff --git a/src/main/java/com/blog/web/repository/ArticleRepository.java b/src/main/java/com/blog/web/repository/ArticleRepository.java index c7e8c04..db9edf6 100644 --- a/src/main/java/com/blog/web/repository/ArticleRepository.java +++ b/src/main/java/com/blog/web/repository/ArticleRepository.java @@ -2,7 +2,13 @@ package com.blog.web.repository; import com.blog.web.models.Article; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; public interface ArticleRepository extends JpaRepository<Article, Long> { - + Optional<Article> findByTitle(String url); + @Query("SELECT a from Article a WHERE a.title LIKE CONCAT('%', :search, '%')") + List<Article> searchArticles(String search); } diff --git a/src/main/java/com/blog/web/services/ArticleService.java b/src/main/java/com/blog/web/services/ArticleService.java index e2ec309..9cab70b 100644 --- a/src/main/java/com/blog/web/services/ArticleService.java +++ b/src/main/java/com/blog/web/services/ArticleService.java @@ -13,4 +13,8 @@ public interface ArticleService { ArticleDto findArticleById(long articleId); void updateArticle(ArticleDto articleDto); + + void delete(Long articleId); + + List<ArticleDto> searchArticles(String search); } diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java index b9e11f6..c8e2903 100644 --- a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java +++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java @@ -41,6 +41,17 @@ public class ArticleServiceImpl implements ArticleService { articleRepository.save(article); } + @Override + public void delete(Long articleId) { + articleRepository.deleteById(articleId); + } + + @Override + public List<ArticleDto> searchArticles(String search) { + List<Article> articles = articleRepository.searchArticles(search); + return articles.stream().map(article -> mapToArticleDto(article)).collect(Collectors.toList()); + } + private Article mapToArticle(ArticleDto articleDto) { Article article = Article.builder() .id(articleDto.getId()) |
