summaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/blog/web/controllers/ArticleController.java25
-rw-r--r--src/main/java/com/blog/web/repository/ArticleRepository.java8
-rw-r--r--src/main/java/com/blog/web/services/ArticleService.java4
-rw-r--r--src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java11
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())