98 lines
2.3 KiB
Go
98 lines
2.3 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"goalfymax-admin/internal/models"
|
|
"goalfymax-admin/internal/services"
|
|
"goalfymax-admin/internal/storage"
|
|
"goalfymax-admin/pkg/utils"
|
|
"strconv"
|
|
)
|
|
|
|
type UserProjectQuotaHandler struct {
|
|
svc services.UserProjectQuotaService
|
|
resp *utils.Response
|
|
}
|
|
|
|
func NewUserProjectQuotaHandler(s services.UserProjectQuotaService) *UserProjectQuotaHandler {
|
|
return &UserProjectQuotaHandler{svc: s, resp: utils.NewResponse()}
|
|
}
|
|
|
|
func (h *UserProjectQuotaHandler) Create(c *gin.Context) {
|
|
var req models.UserProjectQuota
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
h.resp.ValidateError(c, err)
|
|
return
|
|
}
|
|
out, err := h.svc.Create(&req)
|
|
if err != nil {
|
|
h.resp.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
h.resp.Success(c, out)
|
|
}
|
|
|
|
func (h *UserProjectQuotaHandler) Update(c *gin.Context) {
|
|
id64, _ := strconv.ParseUint(c.Param("id"), 10, 64)
|
|
var req models.UserProjectQuota
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
h.resp.ValidateError(c, err)
|
|
return
|
|
}
|
|
out, err := h.svc.Update(uint(id64), &req)
|
|
if err != nil {
|
|
h.resp.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
h.resp.Success(c, out)
|
|
}
|
|
|
|
func (h *UserProjectQuotaHandler) Delete(c *gin.Context) {
|
|
id64, _ := strconv.ParseUint(c.Param("id"), 10, 64)
|
|
if err := h.svc.Delete(uint(id64)); err != nil {
|
|
h.resp.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
h.resp.Success(c, gin.H{"message": "deleted"})
|
|
}
|
|
|
|
func (h *UserProjectQuotaHandler) GetByID(c *gin.Context) {
|
|
id64, _ := strconv.ParseUint(c.Param("id"), 10, 64)
|
|
out, err := h.svc.GetByID(uint(id64))
|
|
if err != nil {
|
|
h.resp.NotFound(c, "not found")
|
|
return
|
|
}
|
|
h.resp.Success(c, out)
|
|
}
|
|
|
|
func (h *UserProjectQuotaHandler) List(c *gin.Context) {
|
|
var filter storage.UserProjectQuotaFilter
|
|
filter.UserID = c.Query("user_id")
|
|
if v := c.Query("enabled"); v != "" {
|
|
if v == "true" {
|
|
b := true
|
|
filter.Enabled = &b
|
|
} else if v == "false" {
|
|
b := false
|
|
filter.Enabled = &b
|
|
}
|
|
}
|
|
if p := c.Query("page"); p != "" {
|
|
if v, err := strconv.Atoi(p); err == nil {
|
|
filter.Page = v
|
|
}
|
|
}
|
|
if s := c.Query("size"); s != "" {
|
|
if v, err := strconv.Atoi(s); err == nil {
|
|
filter.Size = v
|
|
}
|
|
}
|
|
items, total, err := h.svc.List(filter)
|
|
if err != nil {
|
|
h.resp.InternalServerError(c, err.Error())
|
|
return
|
|
}
|
|
h.resp.Page(c, items, total, filter.Page, filter.Size)
|
|
}
|