feat: add update method for banner domain
This commit is contained in:
parent
068183460c
commit
a7ffe420f9
|
@ -36,3 +36,13 @@ func (b *BannerRequest) Validate() error {
|
||||||
validate := validator.New()
|
validate := validator.New()
|
||||||
return validate.Struct(b)
|
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)
|
||||||
|
}
|
|
@ -53,4 +53,5 @@ func AppRouter(app *fiber.App) {
|
||||||
app.Get("/banners", controllers.GetBanners)
|
app.Get("/banners", controllers.GetBanners)
|
||||||
app.Get("/banners/:id", controllers.GetBannerByID)
|
app.Get("/banners/:id", controllers.GetBannerByID)
|
||||||
app.Post("/addbanners", controllers.CreateBanner)
|
app.Post("/addbanners", controllers.CreateBanner)
|
||||||
|
app.Put("/updatebanners/:id", controllers.UpdateBanner)
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,3 +128,51 @@ func CreateBanner(c *fiber.Ctx) error {
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
|
@ -29,3 +29,10 @@ func CreateBanner(banner *domain.Banner) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateBanner(banner *domain.Banner) error {
|
||||||
|
if err := config.DB.Save(banner).Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -32,3 +32,20 @@ func CreateBanner(bannerName, bannerImage string) (domain.Banner, error) {
|
||||||
|
|
||||||
return newBanner, nil
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue