api-qobiltu-dev / space /controller /options /options_controller.go
lifedebugger's picture
Deploy files from GitHub repository
c2003d2
package options_controller
import (
"net/http"
"api.qobiltu.id/models"
"api.qobiltu.id/response"
"api.qobiltu.id/services"
"github.com/gin-gonic/gin"
)
type OptionsController interface {
CreateOptions(ctx *gin.Context)
ListOptions(ctx *gin.Context)
ListOptionsBySlug(ctx *gin.Context)
}
type optionsController struct {
optionService services.OptionsService
}
func NewOptionsController(optionService services.OptionsService) OptionsController {
return &optionsController{
optionService: optionService,
}
}
func (c *optionsController) CreateOptions(ctx *gin.Context) {
var req []models.MultipleOptionsRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
response.HandleError(ctx, err)
return
}
res, err := c.optionService.CreateOptions(ctx, &models.CreateOptionsRequest{
Options: req,
})
if err != nil {
response.HandleError(ctx, err)
return
}
response.HandleSuccess(ctx, http.StatusOK, "Options created successfully", res, nil)
}
func (c *optionsController) ListOptions(ctx *gin.Context) {
res, err := c.optionService.ListOptions(ctx)
if err != nil {
response.HandleError(ctx, err)
return
}
response.HandleSuccess(ctx, http.StatusOK, "Options retrieved successfully", res.Options, nil)
}
func (c *optionsController) ListOptionsBySlug(ctx *gin.Context) {
slug := ctx.Param("slug")
res, err := c.optionService.ListOptionsBySlug(ctx, &models.ListOptionsBySlugRequest{
Slug: slug,
})
if err != nil {
response.HandleError(ctx, err)
return
}
response.HandleSuccess(ctx, http.StatusOK, "Options retrieved successfully", res, nil)
}