feat: add feature delete article for role administrator
This commit is contained in:
parent
fc38a43050
commit
e748c6f492
|
@ -113,3 +113,17 @@ func (h *ArticleHandler) UpdateArticle(c *fiber.Ctx) error {
|
|||
|
||||
return utils.SuccessResponse(c, articleResponse, "Article updated successfully")
|
||||
}
|
||||
|
||||
func (h *ArticleHandler) DeleteArticle(c *fiber.Ctx) error {
|
||||
id := c.Params("article_id")
|
||||
if id == "" {
|
||||
return utils.GenericResponse(c, fiber.StatusBadRequest, "Article ID is required")
|
||||
}
|
||||
|
||||
err := h.ArticleService.DeleteArticle(id)
|
||||
if err != nil {
|
||||
return utils.GenericResponse(c, fiber.StatusInternalServerError, err.Error())
|
||||
}
|
||||
|
||||
return utils.GenericResponse(c, fiber.StatusOK, "Article deleted successfully")
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ type ArticleRepository interface {
|
|||
FindArticleByID(id string) (*model.Article, error)
|
||||
FindAllArticles(page, limit int) ([]model.Article, int, error)
|
||||
UpdateArticle(id string, article *model.Article) error
|
||||
DeleteArticle(id string) error
|
||||
}
|
||||
|
||||
type articleRepository struct {
|
||||
|
@ -66,3 +67,8 @@ func (r *articleRepository) FindAllArticles(page, limit int) ([]model.Article, i
|
|||
func (r *articleRepository) UpdateArticle(id string, article *model.Article) error {
|
||||
return r.DB.Model(&model.Article{}).Where("id = ?", id).Updates(article).Error
|
||||
}
|
||||
|
||||
func (r *articleRepository) DeleteArticle(id string) error {
|
||||
result := r.DB.Delete(&model.Article{}, "id = ?", id)
|
||||
return result.Error
|
||||
}
|
|
@ -20,6 +20,7 @@ type ArticleService interface {
|
|||
GetAllArticles(page, limit int) ([]dto.ArticleResponseDTO, int, error)
|
||||
GetArticleByID(id string) (*dto.ArticleResponseDTO, error)
|
||||
UpdateArticle(id string, request dto.RequestArticleDTO, coverImage *multipart.FileHeader) (*dto.ArticleResponseDTO, error)
|
||||
DeleteArticle(id string) error
|
||||
}
|
||||
|
||||
type articleService struct {
|
||||
|
@ -371,3 +372,25 @@ func (s *articleService) saveCoverImage(coverImage *multipart.FileHeader) (strin
|
|||
|
||||
return coverImagePath, nil
|
||||
}
|
||||
|
||||
func (s *articleService) DeleteArticle(id string) error {
|
||||
|
||||
err := s.ArticleRepo.DeleteArticle(id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete article: %v", err)
|
||||
}
|
||||
|
||||
articleCacheKey := fmt.Sprintf("article:%s", id)
|
||||
err = utils.DeleteData(articleCacheKey)
|
||||
if err != nil {
|
||||
fmt.Printf("Error deleting cache for article: %v\n", err)
|
||||
}
|
||||
|
||||
articlesCacheKey := "articles:all"
|
||||
err = utils.DeleteData(articlesCacheKey)
|
||||
if err != nil {
|
||||
fmt.Printf("Error deleting cache for all articles: %v\n", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -21,4 +21,5 @@ func ArticleRouter(api fiber.Router) {
|
|||
articleAPI.Get("/view-article", articleHandler.GetAllArticles)
|
||||
articleAPI.Get("/view-article/:article_id", articleHandler.GetArticleByID)
|
||||
articleAPI.Put("/update-article/:article_id", middleware.AuthMiddleware, middleware.RoleMiddleware(utils.RoleAdministrator), articleHandler.UpdateArticle)
|
||||
articleAPI.Delete("/delete-article/:article_id", middleware.AuthMiddleware, middleware.RoleMiddleware(utils.RoleAdministrator), articleHandler.DeleteArticle)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue