qudoco-be/app/module/hero_section_image/controller/controller.go

113 lines
2.0 KiB
Go

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