feat: add update method for banner domain

This commit is contained in:
pahmiudahgede 2024-12-11 09:14:41 +07:00
parent 068183460c
commit a7ffe420f9
5 changed files with 85 additions and 2 deletions

View File

@ -36,3 +36,13 @@ func (b *BannerRequest) Validate() error {
validate := validator.New()
return validate.Struct(b)
}
type BannerUpdateDTO struct {
BannerName string `json:"bannername" validate:"required"`
BannerImage string `json:"bannerimage" validate:"required,url"`
}
func (b *BannerUpdateDTO) Validate() error {
validate := validator.New()
return validate.Struct(b)
}

View File

@ -53,4 +53,5 @@ func AppRouter(app *fiber.App) {
app.Get("/banners", controllers.GetBanners)
app.Get("/banners/:id", controllers.GetBannerByID)
app.Post("/addbanners", controllers.CreateBanner)
app.Put("/updatebanners/:id", controllers.UpdateBanner)
}

View File

@ -127,4 +127,52 @@ func CreateBanner(c *fiber.Ctx) error {
Banner: bannerResponse,
},
))
}
}
func UpdateBanner(c *fiber.Ctx) error {
id := c.Params("id")
var bannerInput dto.BannerUpdateDTO
if err := c.BodyParser(&bannerInput); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
fiber.StatusBadRequest,
"Invalid input data",
nil,
))
}
if err := bannerInput.Validate(); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
fiber.StatusBadRequest,
"Validation failed: "+err.Error(),
nil,
))
}
updatedBanner, err := services.UpdateBanner(id, bannerInput.BannerName, bannerInput.BannerImage)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
fiber.StatusInternalServerError,
"Failed to update banner",
nil,
))
}
bannerResponse := dto.NewBannerResponse(
updatedBanner.ID,
updatedBanner.BannerName,
updatedBanner.BannerImage,
utils.FormatDateToIndonesianFormat(updatedBanner.CreatedAt),
utils.FormatDateToIndonesianFormat(updatedBanner.UpdatedAt),
)
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
fiber.StatusOK,
"Banner updated successfully",
struct {
Banner dto.BannerResponse `json:"banner"`
}{
Banner: bannerResponse,
},
))
}

View File

@ -28,4 +28,11 @@ func CreateBanner(banner *domain.Banner) error {
return err
}
return nil
}
func UpdateBanner(banner *domain.Banner) error {
if err := config.DB.Save(banner).Error; err != nil {
return err
}
return nil
}

View File

@ -31,4 +31,21 @@ func CreateBanner(bannerName, bannerImage string) (domain.Banner, error) {
}
return newBanner, nil
}
}
func UpdateBanner(id, bannerName, bannerImage string) (domain.Banner, error) {
banner, err := repositories.GetBannerByID(id)
if err != nil {
return domain.Banner{}, err
}
banner.BannerName = bannerName
banner.BannerImage = bannerImage
if err := repositories.UpdateBanner(&banner); err != nil {
return domain.Banner{}, err
}
return banner, nil
}