qinglong-go/api/env/env.go

181 lines
3.6 KiB
Go
Raw Normal View History

2022-11-16 10:20:07 +00:00
package env
import (
"encoding/json"
"github.com/gin-gonic/gin"
2023-04-22 10:02:50 +00:00
"github.com/huoxue1/qinglong-go/internal/res"
2022-11-16 10:20:07 +00:00
"github.com/huoxue1/qinglong-go/models"
"github.com/huoxue1/qinglong-go/service/env"
"io"
"strconv"
2022-11-16 10:20:07 +00:00
"time"
)
func Api(group *gin.RouterGroup) {
group.GET("", get())
group.POST("", post())
group.PUT("", put())
group.DELETE("", del())
group.PUT("/enable", enable())
group.PUT("/disable", disable())
group.POST("/upload", upload())
group.PUT("/:id/move", move())
}
func move() gin.HandlerFunc {
return func(ctx *gin.Context) {
id, _ := strconv.Atoi(ctx.Param("id"))
type req struct {
FromIndex int64 `json:"fromIndex"`
ToIndex int64 `json:"toIndex"`
}
r := new(req)
err := ctx.ShouldBindJSON(r)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
err = env.MoveEnv(id, r.FromIndex, r.ToIndex)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(true))
}
2022-11-16 10:20:07 +00:00
}
func get() gin.HandlerFunc {
return func(ctx *gin.Context) {
envs, err := env.QueryEnv(ctx.Query("searchValue"))
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
2022-11-16 10:20:07 +00:00
}
ctx.JSON(200, res.Ok(envs))
}
}
func post() gin.HandlerFunc {
return func(ctx *gin.Context) {
envs := make([]*models.Envs, 0)
err := ctx.ShouldBindJSON(&envs)
if err != nil {
ctx.JSON(200, res.Err(502, err))
return
}
status := 0
for _, e := range envs {
e.Createdat = time.Now()
e.Updatedat = time.Now()
e.Timestamp = time.Now().Format("Mon Jan 02 2006 15:04:05 MST")
2023-02-03 04:43:37 +00:00
e.Status = status
2022-11-16 10:20:07 +00:00
id, err := env.AddEnv(e)
if err != nil {
ctx.JSON(200, res.Err(503, err))
return
}
e.Id = id
}
ctx.JSON(200, res.Ok(envs))
}
}
func put() gin.HandlerFunc {
return func(ctx *gin.Context) {
e := new(models.Envs)
err := ctx.ShouldBindJSON(e)
if err != nil {
ctx.JSON(503, res.Err(502, err))
return
}
err = env.UpdateEnv(e)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(env.GetEnv(e.Id)))
}
}
func del() gin.HandlerFunc {
return func(ctx *gin.Context) {
var ids []int
err := ctx.ShouldBindJSON(&ids)
if err != nil {
ctx.JSON(503, res.Err(502, err))
return
}
err = env.DeleteEnv(ids)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(true))
}
}
func enable() gin.HandlerFunc {
return func(ctx *gin.Context) {
var ids []int
err := ctx.ShouldBindJSON(&ids)
if err != nil {
ctx.JSON(503, res.Err(502, err))
return
}
err = env.EnableEnv(ids)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(true))
}
}
func disable() gin.HandlerFunc {
return func(ctx *gin.Context) {
var ids []int
err := ctx.ShouldBindJSON(&ids)
if err != nil {
ctx.JSON(502, res.Err(502, err))
return
}
err = env.DisableEnv(ids)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(true))
}
}
func upload() gin.HandlerFunc {
return func(ctx *gin.Context) {
file, err := ctx.FormFile("env")
if err != nil {
ctx.JSON(502, res.Err(502, err))
return
}
data, _ := file.Open()
defer data.Close()
content, _ := io.ReadAll(data)
envs := make([]*models.Envs, 0)
err = json.Unmarshal(content, &envs)
if err != nil {
ctx.JSON(200, res.Err(502, err))
return
}
status := 0
for _, e := range envs {
e.Createdat = time.Now()
e.Updatedat = time.Now()
e.Timestamp = time.Now().Format("Mon Jan 02 2006 15:04:05 MST")
2023-02-03 04:43:37 +00:00
e.Status = status
2022-11-16 10:20:07 +00:00
id, err := env.AddEnv(e)
if err != nil {
ctx.JSON(200, res.Err(503, err))
return
}
e.Id = id
}
ctx.JSON(200, res.Ok(envs))
}
}