fix: fixing response format for about with id

This commit is contained in:
pahmiudahgede 2025-05-15 11:09:36 +07:00
parent 2d035074a4
commit 550f56e27c
4 changed files with 35 additions and 20 deletions

View File

@ -7,7 +7,6 @@ import (
type RequestAboutDTO struct {
Title string `json:"title"`
CoverImage string `json:"cover_image"`
// AboutDetail []RequestAboutDetailDTO `json:"about_detail"`
}
func (r *RequestAboutDTO) ValidateAbout() (map[string][]string, bool) {
@ -43,11 +42,7 @@ func (r *RequestAboutDetailDTO) ValidateAboutDetail() (map[string][]string, bool
errors := make(map[string][]string)
if strings.TrimSpace(r.AboutId) == "" {
errors["about_id"] = append(errors["about_id"], "About ID is required")
}
if strings.TrimSpace(r.ImageDetail) == "" {
errors["image_detail"] = append(errors["image_detail"], "Image detail is required")
errors["about_id"] = append(errors["about_id"], "about_id is required")
}
if strings.TrimSpace(r.Description) == "" {

View File

@ -12,6 +12,7 @@ type AboutRepository interface {
CreateAboutDetail(aboutDetail *model.AboutDetail) error
GetAllAbout() ([]model.About, error)
GetAboutByID(id string) (*model.About, error)
GetAboutByIDWithoutPrel(id string) (*model.About, error)
GetAboutDetailByID(id string) (*model.AboutDetail, error)
UpdateAbout(id string, about *model.About) (*model.About, error)
UpdateAboutDetail(id string, aboutDetail *model.AboutDetail) (*model.AboutDetail, error)
@ -60,6 +61,17 @@ func (r *aboutRepository) GetAboutByID(id string) (*model.About, error) {
return &about, nil
}
func (r *aboutRepository) GetAboutByIDWithoutPrel(id string) (*model.About, error) {
var about model.About
if err := r.DB.Where("id = ?", id).First(&about).Error; err != nil {
if err == gorm.ErrRecordNotFound {
return nil, fmt.Errorf("about with ID %s not found", id)
}
return nil, fmt.Errorf("failed to fetch About by ID: %v", err)
}
return &about, nil
}
func (r *aboutRepository) GetAboutDetailByID(id string) (*model.AboutDetail, error) {
var aboutDetail model.AboutDetail
if err := r.DB.Where("id = ?", id).First(&aboutDetail).Error; err != nil {

View File

@ -272,6 +272,17 @@ func (s *aboutService) GetAboutByID(id string) (*dto.ResponseAboutDTO, error) {
return nil, fmt.Errorf("error formatting About response: %v", err)
}
var responseDetails []dto.ResponseAboutDetailDTO
for _, detail := range about.AboutDetail {
formattedDetail, err := formatResponseAboutDetailDTO(&detail)
if err != nil {
return nil, fmt.Errorf("error formatting AboutDetail response: %v", err)
}
responseDetails = append(responseDetails, *formattedDetail)
}
response.AboutDetail = &responseDetails
return response, nil
}
@ -317,9 +328,8 @@ func (s *aboutService) CreateAboutDetail(request dto.RequestAboutDetailDTO, cove
return nil, fmt.Errorf("validation error: %v", errors)
}
_, err := s.aboutRepo.GetAboutByID(request.AboutId)
_, err := s.aboutRepo.GetAboutByIDWithoutPrel(request.AboutId)
if err != nil {
return nil, fmt.Errorf("about_id tidak ditemukan: %v", err)
}

View File

@ -12,26 +12,24 @@ import (
)
func AboutRouter(api fiber.Router) {
aboutRepo := repositories.NewAboutRepository(config.DB)
aboutService := services.NewAboutService(aboutRepo)
aboutHandler := handler.NewAboutHandler(aboutService)
aboutRoutes := api.Group("/about")
aboutRoute := api.Group("/about")
aboutRoutes.Use(middleware.AuthMiddleware, middleware.RoleMiddleware(utils.RoleAdministrator))
aboutRoutes.Use(middleware.AuthMiddleware)
aboutRoute.Get("/", aboutHandler.GetAllAbout)
aboutRoute.Get("/:id", aboutHandler.GetAboutByID)
aboutRoutes.Post("/", aboutHandler.CreateAbout)
aboutRoutes.Put("/:id", aboutHandler.UpdateAbout)
aboutRoutes.Delete("/:id", aboutHandler.DeleteAbout)
aboutRoutes.Get("/", aboutHandler.GetAllAbout)
aboutRoutes.Get("/:id", aboutHandler.GetAboutByID)
aboutRoutes.Post("/", aboutHandler.CreateAbout) // admin
aboutRoutes.Put("/:id", middleware.RoleMiddleware(utils.RoleAdministrator), aboutHandler.UpdateAbout)
aboutRoutes.Delete("/:id", aboutHandler.DeleteAbout) // admin
aboutDetailRoutes := api.Group("/about-detail")
aboutDetailRoutes.Use(middleware.AuthMiddleware, middleware.RoleMiddleware(utils.RoleAdministrator))
aboutDetailRoutes.Use(middleware.AuthMiddleware)
aboutDetailRoute := api.Group("/about-detail")
aboutDetailRoute.Get("/:id", aboutHandler.GetAboutDetailById)
aboutDetailRoutes.Post("/", aboutHandler.CreateAboutDetail)
aboutDetailRoutes.Put("/:id", aboutHandler.UpdateAboutDetail)
aboutDetailRoutes.Delete("/:id", aboutHandler.DeleteAboutDetail)
aboutDetailRoutes.Post("/", aboutHandler.CreateAboutDetail) // admin
aboutDetailRoutes.Put("/:id", middleware.RoleMiddleware(utils.RoleAdministrator), aboutHandler.UpdateAboutDetail)
aboutDetailRoutes.Delete("/:id", middleware.RoleMiddleware(utils.RoleAdministrator), aboutHandler.DeleteAboutDetail)
}