feat: add post method for banner doman

This commit is contained in:
pahmiudahgede 2024-12-11 09:09:39 +07:00
parent f2934658ae
commit 068183460c
4 changed files with 68 additions and 0 deletions

View File

@ -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)
}

View File

@ -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,
},
))
}

View File

@ -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
}

View File

@ -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
}