package controller import ( "strconv" "web-qudo-be/app/module/hero_section_image/service" "github.com/gofiber/fiber/v2" ) type HeroSectionImageController struct { Service *service.HeroSectionImageService } type Controller struct { HeroSectionImage *HeroSectionImageController } func NewController(service *service.HeroSectionImageService) *Controller { return &Controller{ HeroSectionImage: &HeroSectionImageController{ Service: service, }, } } // GET by hero_id func (c *HeroSectionImageController) GetByHeroID(ctx *fiber.Ctx) error { heroId, err := strconv.Atoi(ctx.Params("heroId")) if err != nil { return err } data, err := c.Service.GetByHeroID(ctx.Context(), heroId) if err != nil { return err } return ctx.JSON(fiber.Map{ "data": data, }) } // CREATE (UPLOAD) func (c *HeroSectionImageController) Upload(ctx *fiber.Ctx) error { heroId, err := strconv.Atoi(ctx.Params("heroId")) if err != nil { return err } file, err := ctx.FormFile("image") if err != nil { return err } path := "./uploads/" + file.Filename ctx.SaveFile(file, path) url := "/uploads/" + file.Filename err = c.Service.Upload(ctx.Context(), heroId, path, url) if err != nil { return err } return ctx.JSON(fiber.Map{ "message": "uploaded", }) } // UPDATE func (c *HeroSectionImageController) Update(ctx *fiber.Ctx) error { id, err := strconv.Atoi(ctx.Params("id")) if err != nil { return err } file, err := ctx.FormFile("image") if err != nil { return err } path := "./uploads/" + file.Filename ctx.SaveFile(file, path) url := "/uploads/" + file.Filename err = c.Service.Update(ctx.Context(), id, path, url) if err != nil { return err } return ctx.JSON(fiber.Map{ "message": "updated", }) } // DELETE func (c *HeroSectionImageController) Delete(ctx *fiber.Ctx) error { id, err := strconv.Atoi(ctx.Params("id")) if err != nil { return err } err = c.Service.Delete(ctx.Context(), id) if err != nil { return err } return ctx.JSON(fiber.Map{ "message": "deleted", }) }