feat: add env disenable
This commit is contained in:
@@ -35,6 +35,7 @@ func (ec *EnvController) CreateEnvVar(c *gin.Context) {
|
||||
Value string `json:"value" binding:"required"`
|
||||
Remark string `json:"remark"`
|
||||
Hidden *bool `json:"hidden"`
|
||||
Enabled *bool `json:"enabled"`
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
@@ -47,7 +48,12 @@ func (ec *EnvController) CreateEnvVar(c *gin.Context) {
|
||||
hidden = *req.Hidden
|
||||
}
|
||||
|
||||
envVar := ec.envService.CreateEnvVar(req.Name, req.Value, req.Remark, hidden, userID)
|
||||
enabled := true
|
||||
if req.Enabled != nil {
|
||||
enabled = *req.Enabled
|
||||
}
|
||||
|
||||
envVar := ec.envService.CreateEnvVar(req.Name, req.Value, req.Remark, hidden, enabled, userID)
|
||||
utils.Success(c, vo.ToEnvVO(envVar))
|
||||
}
|
||||
|
||||
@@ -133,10 +139,11 @@ func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
|
||||
}
|
||||
|
||||
var req struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
Remark string `json:"remark"`
|
||||
Hidden *bool `json:"hidden"`
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
Remark string `json:"remark"`
|
||||
Hidden *bool `json:"hidden"`
|
||||
Enabled *bool `json:"enabled"`
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
@@ -155,7 +162,13 @@ func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
|
||||
if req.Hidden != nil {
|
||||
hidden = *req.Hidden
|
||||
}
|
||||
envVar := ec.envService.UpdateEnvVar(id, req.Name, req.Value, req.Remark, hidden)
|
||||
|
||||
enabled := existing.Enabled
|
||||
if req.Enabled != nil {
|
||||
enabled = *req.Enabled
|
||||
}
|
||||
|
||||
envVar := ec.envService.UpdateEnvVar(id, req.Name, req.Value, req.Remark, hidden, enabled)
|
||||
if envVar == nil {
|
||||
utils.NotFound(c, "环境变量不存在")
|
||||
return
|
||||
|
||||
@@ -30,10 +30,20 @@ func Migrate() error {
|
||||
&models.NotifyBinding{},
|
||||
}
|
||||
|
||||
// 检查环境变量表中是否已存在 enabled 列
|
||||
hasEnabled := DB.Migrator().HasColumn(&models.EnvironmentVariable{}, "enabled")
|
||||
if err := AutoMigrate(allModels...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 如果原来没有 enabled 列,说明是平滑升级,将现有的环境变量默认设置为启用
|
||||
if !hasEnabled {
|
||||
logger.Infof("[Database] 为现有环境变量初始化启用状态...")
|
||||
if err := DB.Model(&models.EnvironmentVariable{}).Where("1=1").Update("enabled", true).Error; err != nil {
|
||||
logger.Errorf("[Database] 初始化环境变量启用状态失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ type EnvironmentVariable struct {
|
||||
Value BigText `json:"value"`
|
||||
Remark string `json:"remark" gorm:"size:500"`
|
||||
Hidden bool `json:"hidden" gorm:"default:true"`
|
||||
Enabled bool `json:"enabled" gorm:"default:true"`
|
||||
UserID string `json:"user_id" gorm:"size:20;index"`
|
||||
CreatedAt LocalTime `json:"created_at"`
|
||||
UpdatedAt LocalTime `json:"updated_at"`
|
||||
|
||||
@@ -36,6 +36,7 @@ type EnvVO struct {
|
||||
Value string `json:"value"`
|
||||
Remark string `json:"remark"`
|
||||
Hidden bool `json:"hidden"`
|
||||
Enabled bool `json:"enabled"`
|
||||
CreatedAt models.LocalTime `json:"created_at"`
|
||||
UpdatedAt models.LocalTime `json:"updated_at"`
|
||||
}
|
||||
@@ -51,6 +52,7 @@ func ToEnvVO(env *models.EnvironmentVariable) *EnvVO {
|
||||
Value: string(env.Value),
|
||||
Remark: env.Remark,
|
||||
Hidden: env.Hidden,
|
||||
Enabled: env.Enabled,
|
||||
CreatedAt: env.CreatedAt,
|
||||
UpdatedAt: env.UpdatedAt,
|
||||
}
|
||||
|
||||
@@ -16,13 +16,14 @@ func NewEnvService() *EnvService {
|
||||
return &EnvService{}
|
||||
}
|
||||
|
||||
func (es *EnvService) CreateEnvVar(name, value, remark string, hidden bool, userID string) *models.EnvironmentVariable {
|
||||
func (es *EnvService) CreateEnvVar(name, value, remark string, hidden, enabled bool, userID string) *models.EnvironmentVariable {
|
||||
env := &models.EnvironmentVariable{
|
||||
ID: utils.GenerateID(),
|
||||
Name: name,
|
||||
Value: models.BigText(value),
|
||||
Remark: remark,
|
||||
Hidden: hidden,
|
||||
Enabled: enabled,
|
||||
UserID: userID,
|
||||
CreatedAt: models.Now(),
|
||||
UpdatedAt: models.Now(),
|
||||
@@ -65,16 +66,17 @@ func (es *EnvService) GetEnvVarByID(id string) *models.EnvironmentVariable {
|
||||
return &env
|
||||
}
|
||||
|
||||
func (es *EnvService) UpdateEnvVar(id string, name, value, remark string, hidden bool) *models.EnvironmentVariable {
|
||||
func (es *EnvService) UpdateEnvVar(id string, name, value, remark string, hidden, enabled bool) *models.EnvironmentVariable {
|
||||
var env models.EnvironmentVariable
|
||||
if err := database.DB.Where("id = ?", id).First(&env).Error; err != nil {
|
||||
return nil
|
||||
}
|
||||
updates := map[string]interface{}{
|
||||
"name": name,
|
||||
"value": models.BigText(value),
|
||||
"remark": remark,
|
||||
"hidden": hidden,
|
||||
"name": name,
|
||||
"value": models.BigText(value),
|
||||
"remark": remark,
|
||||
"hidden": hidden,
|
||||
"enabled": enabled,
|
||||
}
|
||||
database.DB.Model(&env).Updates(updates)
|
||||
return &env
|
||||
@@ -165,13 +167,18 @@ func (es *EnvService) formatEnvVars(envs []models.EnvironmentVariable) []string
|
||||
nameToIndex := make(map[string]int)
|
||||
|
||||
for _, env := range envs {
|
||||
value := string(env.Value)
|
||||
if !env.Enabled {
|
||||
value = ""
|
||||
}
|
||||
|
||||
if idx, ok := nameToIndex[env.Name]; ok {
|
||||
mergedList[idx].values = append(mergedList[idx].values, string(env.Value))
|
||||
mergedList[idx].values = append(mergedList[idx].values, value)
|
||||
} else {
|
||||
nameToIndex[env.Name] = len(mergedList)
|
||||
mergedList = append(mergedList, mergedEnv{
|
||||
name: env.Name,
|
||||
values: []string{string(env.Value)},
|
||||
values: []string{value},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user