126 lines
2.7 KiB
Go
126 lines
2.7 KiB
Go
package demo
|
|
|
|
import (
|
|
"git.apinb.com/bsm-sdk/core/errcode"
|
|
"git.apinb.com/bsm-sdk/core/infra"
|
|
"git.apinb.com/bsm-sdk/core/utils"
|
|
"git.apinb.com/ops/sample/internal/models"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type CreateRequest struct {
|
|
Name string `json:"name" binding:"required,max=255"`
|
|
Age int `json:"age"`
|
|
}
|
|
|
|
type UpdateRequest struct {
|
|
Name string `json:"name" binding:"required,max=255"`
|
|
Age int `json:"age"`
|
|
}
|
|
|
|
type ListReply struct {
|
|
Total int64 `json:"total"`
|
|
List []models.SampleDemo `json:"list"`
|
|
}
|
|
|
|
func Create(ctx *gin.Context) {
|
|
var req CreateRequest
|
|
if err := ctx.ShouldBindJSON(&req); err != nil {
|
|
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
|
return
|
|
}
|
|
|
|
data := models.SampleDemo{
|
|
Name: req.Name,
|
|
Age: req.Age,
|
|
}
|
|
data.Identity = utils.UUID()
|
|
data.Status = 1
|
|
if err := models.CreateSampleDemo(&data); err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
infra.Response.Success(ctx, data)
|
|
}
|
|
|
|
func List(ctx *gin.Context) {
|
|
page := utils.String2Int(ctx.DefaultQuery("page", "1"))
|
|
size := utils.String2Int(ctx.DefaultQuery("size", "20"))
|
|
if page < 1 {
|
|
page = 1
|
|
}
|
|
if size < 1 || size > 100 {
|
|
size = 20
|
|
}
|
|
|
|
list, total, err := models.ListSampleDemos(page, size)
|
|
if err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
infra.Response.Success(ctx, ListReply{Total: total, List: list})
|
|
}
|
|
|
|
func Get(ctx *gin.Context) {
|
|
identity := ctx.Param("identity")
|
|
if identity == "" {
|
|
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
|
return
|
|
}
|
|
|
|
data, err := models.GetSampleDemoByField("identity", identity)
|
|
if err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
infra.Response.Success(ctx, data)
|
|
}
|
|
|
|
func Update(ctx *gin.Context) {
|
|
identity := ctx.Param("identity")
|
|
if identity == "" {
|
|
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
|
return
|
|
}
|
|
|
|
var req UpdateRequest
|
|
if err := ctx.ShouldBindJSON(&req); err != nil {
|
|
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
|
return
|
|
}
|
|
|
|
data, err := models.GetSampleDemoByField("identity", identity)
|
|
if err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
|
|
data.Name = req.Name
|
|
data.Age = req.Age
|
|
if err := models.UpdateSampleDemo(data); err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
infra.Response.Success(ctx, data)
|
|
}
|
|
|
|
func Delete(ctx *gin.Context) {
|
|
identity := ctx.Param("identity")
|
|
if identity == "" {
|
|
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
|
return
|
|
}
|
|
|
|
data, err := models.GetSampleDemoByField("identity", identity)
|
|
if err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
|
|
if err := models.DeleteSampleDemo(data); err != nil {
|
|
infra.Response.Error(ctx, err)
|
|
return
|
|
}
|
|
infra.Response.Success(ctx, identity)
|
|
}
|