| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package models
-
- import (
- "database/sql"
- "encoding/json"
- "fmt"
- "strconv"
- "strings"
- "time"
- )
-
- // StartupConfig 启动配置表
- type StartupConfig struct {
- ID int64 `json:"id" db:"id"` // 技术主键
- ServiceName string `json:"service_name" db:"service_name"` // 服务名称
- Environment string `json:"environment" db:"environment"` // 环境:dev/test/prod
- Version int `json:"version" db:"version"` // 配置版本
- ConfigJSON json.RawMessage `json:"config_json" db:"config_json"` // 配置内容JSON
- IsActive bool `json:"is_active" db:"is_active"` // 是否生效
- Creator string `json:"creator" db:"creator"` // 创建人
- CreatedAt time.Time `json:"created_at" db:"created_at"` // 创建时间
- UpdatedAt sql.NullTime `json:"updated_at,omitempty" db:"updated_at"` // 更新时间
- }
-
- // TableName 返回表名
- func (StartupConfig) TableName() string {
- return "startup_config"
- }
-
- // ConfigKey 返回业务键:service_name.environment.vversion
- func (c *StartupConfig) ConfigKey() string {
- return fmt.Sprintf("%s.%s.v%d", c.ServiceName, c.Environment, c.Version)
- }
-
- // ParseConfigKey 解析业务键
- func ParseConfigKey(key string) (service, env string, version int, ok bool) {
- parts := strings.Split(key, ".")
- if len(parts) != 3 {
- return "", "", 0, false
- }
-
- // 检查版本格式
- if !strings.HasPrefix(parts[2], "v") {
- return "", "", 0, false
- }
-
- verStr := strings.TrimPrefix(parts[2], "v")
- version, err := strconv.Atoi(verStr)
- if err != nil {
- return "", "", 0, false
- }
-
- return parts[0], parts[1], version, true
- }
|