feat: add post method for banner doman
This commit is contained in:
parent
f2934658ae
commit
068183460c
|
@ -52,4 +52,5 @@ func AppRouter(app *fiber.App) {
|
|||
// # banner
|
||||
app.Get("/banners", controllers.GetBanners)
|
||||
app.Get("/banners/:id", controllers.GetBannerByID)
|
||||
app.Post("/addbanners", controllers.CreateBanner)
|
||||
}
|
||||
|
|
|
@ -81,3 +81,50 @@ func GetBannerByID(c *fiber.Ctx) error {
|
|||
},
|
||||
))
|
||||
}
|
||||
|
||||
func CreateBanner(c *fiber.Ctx) error {
|
||||
var bannerInput dto.BannerRequest
|
||||
|
||||
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,
|
||||
))
|
||||
}
|
||||
|
||||
newBanner, err := services.CreateBanner(bannerInput.BannerName, bannerInput.BannerImage)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||
fiber.StatusInternalServerError,
|
||||
"Failed to create banner",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
bannerResponse := dto.NewBannerResponse(
|
||||
newBanner.ID,
|
||||
newBanner.BannerName,
|
||||
newBanner.BannerImage,
|
||||
utils.FormatDateToIndonesianFormat(newBanner.CreatedAt),
|
||||
utils.FormatDateToIndonesianFormat(newBanner.UpdatedAt),
|
||||
)
|
||||
|
||||
return c.Status(fiber.StatusCreated).JSON(utils.FormatResponse(
|
||||
fiber.StatusCreated,
|
||||
"Banner created successfully",
|
||||
struct {
|
||||
Banner dto.BannerResponse `json:"banner"`
|
||||
}{
|
||||
Banner: bannerResponse,
|
||||
},
|
||||
))
|
||||
}
|
|
@ -22,3 +22,10 @@ func GetBannerByID(id string) (domain.Banner, error) {
|
|||
}
|
||||
return banner, nil
|
||||
}
|
||||
|
||||
func CreateBanner(banner *domain.Banner) error {
|
||||
if err := config.DB.Create(banner).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -19,3 +19,16 @@ func GetBannerByID(id string) (domain.Banner, error) {
|
|||
}
|
||||
return banner, nil
|
||||
}
|
||||
|
||||
func CreateBanner(bannerName, bannerImage string) (domain.Banner, error) {
|
||||
newBanner := domain.Banner{
|
||||
BannerName: bannerName,
|
||||
BannerImage: bannerImage,
|
||||
}
|
||||
|
||||
if err := repositories.CreateBanner(&newBanner); err != nil {
|
||||
return domain.Banner{}, err
|
||||
}
|
||||
|
||||
return newBanner, nil
|
||||
}
|
Loading…
Reference in New Issue