ArticleController.java

package io.smartir.smartir.website.controller;

import io.smartir.smartir.website.model.Article;
import io.smartir.smartir.website.model.ArticleContentsModel;
import io.smartir.smartir.website.model.ArticleItem;
import io.smartir.smartir.website.requests.ArticleFilterRequest;
import io.smartir.smartir.website.service.ArticleService;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequestMapping("article")
public class ArticleController {

    private final ArticleService articleService;

    public ArticleController(ArticleService articleService) {
        this.articleService = articleService;
    }

    @PostMapping(value = "add", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
    public String addArticle(@RequestPart(value = "image", required = false) MultipartFile imageFile,
                             @RequestPart(value = "title", required = false) String title,
                             @RequestPart(value = "bannerImage", required = false) MultipartFile bannerImageFile,
                             @RequestPart(value = "context", required = false) List<ArticleContentsModel> articleContentsModel,
                             @RequestPart(value = "tags", required = false) List<Integer> tags,
                             @RequestPart(value = "summary") String summary) throws Exception {
       return articleService.addArticle(imageFile,title,bannerImageFile,articleContentsModel,tags,summary);
    }

    @PostMapping(value = "update", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
    public String updateArticle(@RequestPart(value = "id") int id,
                             @RequestPart(value = "image", required = false) MultipartFile imageFile,
                             @RequestPart(value = "title", required = false) String title,
                             @RequestPart(value = "bannerImage", required = false) MultipartFile bannerImageFile,
                             @RequestPart(value = "context", required = false) List<ArticleContentsModel> articleContentsModel,
                             @RequestPart(value = "tags", required = false) List<Integer> tags,
                             @RequestPart(value = "summary") String summary) throws Exception {
        return articleService.updateArticle(id,imageFile,title,bannerImageFile,articleContentsModel,tags,summary);
    }

    @PostMapping(value = "get-all")
    public ResponseEntity<Article>  getArticles(@RequestBody ArticleFilterRequest articleFilterRequest){
        var result=articleService.getArticles(articleFilterRequest);
        return ResponseEntity.ok(Article.toArticle(result));
    }

    @PostMapping(value = "get-article/{id}")
    public ResponseEntity<?>  getArticle(@PathVariable int id){
        var result=articleService.getArticle(id);
        return ResponseEntity.ok(result);
    }

    @GetMapping(value = "get-all-articles")
    public ResponseEntity<List<ArticleItem>>  getAllArticles(){
        var result=articleService.getAllArticles();
        return ResponseEntity.ok(result.stream().map(ArticleItem::toArticleItem).toList());
    }

    @DeleteMapping(value = "delete/{articleId}")
    public String deleteArticle(@PathVariable int articleId){
       return articleService.deleteArticle(articleId);
    }
    @GetMapping("status")
    public String getStatus() {
        return "Filter-service is working";
    }
}