Files
TaskPool/internal/controllers/env_controller.go
T
2026-02-10 17:20:59 +08:00

129 lines
2.9 KiB
Go

package controllers
import (
"strconv"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/utils"
"github.com/gin-gonic/gin"
)
type EnvController struct {
envService *services.EnvService
}
func NewEnvController(envService *services.EnvService) *EnvController {
return &EnvController{envService: envService}
}
func (ec *EnvController) CreateEnvVar(c *gin.Context) {
userID := 1
var req struct {
Name string `json:"name" binding:"required"`
Value string `json:"value" binding:"required"`
Remark string `json:"remark"`
Hidden *bool `json:"hidden"`
}
if err := c.ShouldBindJSON(&req); err != nil {
utils.BadRequest(c, err.Error())
return
}
hidden := true
if req.Hidden != nil {
hidden = *req.Hidden
}
envVar := ec.envService.CreateEnvVar(req.Name, req.Value, req.Remark, hidden, userID)
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) GetEnvVars(c *gin.Context) {
userID := 1
p := utils.ParsePagination(c)
name := c.DefaultQuery("name", "")
envVars, total := ec.envService.GetEnvVarsWithPagination(userID, name, p.Page, p.PageSize)
utils.PaginatedResponse(c, vo.ToEnvVOListFromModels(envVars), total, p)
}
func (ec *EnvController) GetAllEnvVars(c *gin.Context) {
userID := 1
envVars := ec.envService.GetEnvVarsByUserID(userID)
utils.Success(c, vo.ToEnvVOListFromModels(envVars))
}
func (ec *EnvController) GetEnvVar(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
utils.BadRequest(c, "无效的环境变量ID")
return
}
envVar := ec.envService.GetEnvVarByID(id)
if envVar == nil {
utils.NotFound(c, "环境变量不存在")
return
}
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
utils.BadRequest(c, "无效的环境变量ID")
return
}
var req struct {
Name string `json:"name"`
Value string `json:"value"`
Remark string `json:"remark"`
Hidden *bool `json:"hidden"`
}
if err := c.ShouldBindJSON(&req); err != nil {
utils.BadRequest(c, err.Error())
return
}
// 对于更新,获取现有数据
existing := ec.envService.GetEnvVarByID(id)
if existing == nil {
utils.NotFound(c, "环境变量不存在")
return
}
hidden := existing.Hidden
if req.Hidden != nil {
hidden = *req.Hidden
}
envVar := ec.envService.UpdateEnvVar(id, req.Name, req.Value, req.Remark, hidden)
if envVar == nil {
utils.NotFound(c, "环境变量不存在")
return
}
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) DeleteEnvVar(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
utils.BadRequest(c, "无效的环境变量ID")
return
}
success := ec.envService.DeleteEnvVar(id)
if !success {
utils.NotFound(c, "环境变量不存在")
return
}
utils.SuccessMsg(c, "删除成功")
}