fix: fixing response eror handler

This commit is contained in:
pahmiudahgede 2025-02-17 18:34:57 +07:00
parent 29fd863d94
commit 39e61d629e
2 changed files with 38 additions and 8 deletions

View File

@ -77,7 +77,6 @@ func (h *ArticleHandler) GetArticleByID(c *fiber.Ctx) error {
article, err := h.ArticleService.GetArticleByID(id)
if err != nil {
return utils.GenericResponse(c, fiber.StatusNotFound, "Article not found")
}
@ -108,8 +107,12 @@ func (h *ArticleHandler) UpdateArticle(c *fiber.Ctx) error {
articleResponse, err := h.ArticleService.UpdateArticle(id, request, coverImage)
if err != nil {
if err.Error() == fmt.Sprintf("article with ID %s not found", id) {
return utils.GenericResponse(c, fiber.StatusInternalServerError, err.Error())
}
return utils.GenericResponse(c, fiber.StatusNotFound, err.Error())
}
return utils.SuccessResponse(c, articleResponse, "Article updated successfully")
}
@ -122,8 +125,13 @@ func (h *ArticleHandler) DeleteArticle(c *fiber.Ctx) error {
err := h.ArticleService.DeleteArticle(id)
if err != nil {
if err.Error() == fmt.Sprintf("article with ID %s not found", id) {
return utils.GenericResponse(c, fiber.StatusInternalServerError, err.Error())
}
return utils.GenericResponse(c, fiber.StatusNotFound, err.Error())
}
return utils.GenericResponse(c, fiber.StatusOK, "Article deleted successfully")
}

View File

@ -248,10 +248,9 @@ func (s *articleService) GetArticleByID(id string) (*dto.ArticleResponseDTO, err
}
func (s *articleService) UpdateArticle(id string, request dto.RequestArticleDTO, coverImage *multipart.FileHeader) (*dto.ArticleResponseDTO, error) {
article, err := s.ArticleRepo.FindArticleByID(id)
if err != nil {
return nil, fmt.Errorf("article not found: %v", err)
return nil, fmt.Errorf("article not found: %v", id)
}
article.Title = request.Title
@ -261,7 +260,8 @@ func (s *articleService) UpdateArticle(id string, request dto.RequestArticleDTO,
var coverImagePath string
if coverImage != nil {
coverImagePath, err = s.saveCoverImage(coverImage)
coverImagePath, err = s.saveCoverImage(coverImage, article.CoverImage)
if err != nil {
return nil, fmt.Errorf("failed to save cover image: %v", err)
}
@ -337,7 +337,7 @@ func (s *articleService) UpdateArticle(id string, request dto.RequestArticleDTO,
return articleResponseDTO, nil
}
func (s *articleService) saveCoverImage(coverImage *multipart.FileHeader) (string, error) {
func (s *articleService) saveCoverImage(coverImage *multipart.FileHeader, oldImagePath string) (string, error) {
coverImageDir := "./public/uploads/articles"
if _, err := os.Stat(coverImageDir); os.IsNotExist(err) {
if err := os.MkdirAll(coverImageDir, os.ModePerm); err != nil {
@ -353,6 +353,15 @@ func (s *articleService) saveCoverImage(coverImage *multipart.FileHeader) (strin
coverImageFileName := fmt.Sprintf("%s_cover%s", uuid.New().String(), extension)
coverImagePath := filepath.Join(coverImageDir, coverImageFileName)
if oldImagePath != "" {
err := os.Remove(oldImagePath)
if err != nil {
fmt.Printf("Failed to delete old cover image: %v\n", err)
} else {
fmt.Printf("Successfully deleted old cover image: %s\n", oldImagePath)
}
}
src, err := coverImage.Open()
if err != nil {
return "", fmt.Errorf("failed to open uploaded file: %v", err)
@ -374,8 +383,21 @@ func (s *articleService) saveCoverImage(coverImage *multipart.FileHeader) (strin
}
func (s *articleService) DeleteArticle(id string) error {
article, err := s.ArticleRepo.FindArticleByID(id)
if err != nil {
return fmt.Errorf("failed to find article: %v", id)
}
err := s.ArticleRepo.DeleteArticle(id)
if article.CoverImage != "" {
err := os.Remove(article.CoverImage)
if err != nil {
fmt.Printf("Failed to delete cover image: %v\n", err)
} else {
fmt.Printf("Successfully deleted cover image: %s\n", article.CoverImage)
}
}
err = s.ArticleRepo.DeleteArticle(id)
if err != nil {
return fmt.Errorf("failed to delete article: %v", err)
}