keyconfig

package
v1.32.101 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2026 License: Zlib Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CheckSetting = iota + 1<<0
)

Variables

This section is empty.

Functions

func ApplySettingsToStruct

func ApplySettingsToStruct(settingsMap map[string]any, target any) error

ApplySettingsToStruct 将 map[string]any 的配置值应用到 struct settingsMap: key 为 Setting.ID(如 "database.host")

Types

type JSONSchema

type JSONSchema struct {
	Type             string                 `json:"type"`
	Properties       map[string]*JSONSchema `json:"properties,omitempty"`
	Items            *JSONSchema            `json:"items,omitempty"` // for array
	Description      string                 `json:"description,omitempty"`
	Enum             []any                  `json:"enum,omitempty"`
	EnumDescriptions map[string]string      `json:"x-enum-descriptions,omitempty"` //enum Description 描述(不是标准的json schema)
	Minimum          *float64               `json:"minimum,omitempty"`
	Maximum          *float64               `json:"maximum,omitempty"`
	Pattern          string                 `json:"pattern,omitempty"`
	Required         []string               `json:"required,omitempty"`
}

type KeyConfig

type KeyConfig struct {
	// contains filtered or unexported fields
}

KeyConfig 配置项

func NewConfig

func NewConfig(opts ...Option) *KeyConfig

NewConfig 创建新的配置管理器

func NewConfigFromParent

func NewConfigFromParent(parent *KeyConfig, fromID string, opts ...Option) *KeyConfig

func (*KeyConfig) AddChangeListener

func (fi *KeyConfig) AddChangeListener(listener func(context.Context, *Setting, string, any))

AddChangeListener 添加配置变更监听器

func (*KeyConfig) AddSetting

func (fi *KeyConfig) AddSetting(settings ...*Setting) error

AddSetting 添加自定义配置项

func (*KeyConfig) GetAllSettings

func (fi *KeyConfig) GetAllSettings() map[string]*Setting

GetAllSettings 获取所有配置项

func (*KeyConfig) GetFileName

func (fi *KeyConfig) GetFileName() string

func (*KeyConfig) GetSetting

func (fi *KeyConfig) GetSetting(id string) (*Setting, bool)

GetSetting 获取配置项定义

func (*KeyConfig) GetSummary

func (fi *KeyConfig) GetSummary() string

GetSummary 获取配置摘要

func (*KeyConfig) GetValue

func (fi *KeyConfig) GetValue(id string) (any, bool)

GetValue 获取配置项当前值

func (*KeyConfig) Load

func (fi *KeyConfig) Load() error

Load 加载配置

func (*KeyConfig) ResetToDefaults

func (fi *KeyConfig) ResetToDefaults(category string)

ResetToDefaults 重置为默认值

func (*KeyConfig) Save

func (fi *KeyConfig) Save() error

Save 保存配置

func (*KeyConfig) SetValue

func (fi *KeyConfig) SetValue(ctx context.Context, id string, value any) (bool, string)

SetValue 设置配置项值

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

func NewManager

func NewManager() *Manager

func (*Manager) AddCoder

func (cm *Manager) AddCoder(format string, coder coder.Coder)

func (*Manager) AddConfig

func (cm *Manager) AddConfig(fi *KeyConfig)

func (*Manager) AddHandler

func (cm *Manager) AddHandler(ty string, handler global.HandlerFunc)

func (*Manager) ForeachHandler

func (cm *Manager) ForeachHandler(fn func(string, global.HandlerFunc))

func (*Manager) GetConfig

func (cm *Manager) GetConfig(filename string) (*KeyConfig, bool)

func (*Manager) GetHandler

func (cm *Manager) GetHandler(ty string) (global.HandlerFunc, bool)

func (*Manager) Load

func (cm *Manager) Load() error

func (*Manager) LoadConfig

func (cm *Manager) LoadConfig(filename, format string) *KeyConfig

func (*Manager) RemoveConfig

func (cm *Manager) RemoveConfig(filename string)

func (*Manager) RemoveHandler

func (cm *Manager) RemoveHandler(ty string)

func (*Manager) Save

func (cm *Manager) Save() error

type Option

type Option func(*KeyConfig)

func WithCoder

func WithCoder(coder coder.Coder) Option

func WithFeature

func WithFeature(feature int) Option

func WithFileName

func WithFileName(filename string) Option

type Setting

type Setting struct {
	ID          string                                `json:"id"`
	Name        string                                `json:"name"`
	Description string                                `json:"description"`
	Type        SettingType                           `json:"type"`
	Default     any                                   `json:"default"`
	Category    string                                `json:"category"`
	Options     []SettingOption                       `json:"options,omitempty"`
	Constraint  SettingConstraint                     `json:"constraint,omitempty"`
	DependsOn   []string                              `json:"depends_on,omitempty"`
	Visible     bool                                  `json:"visible"`
	Array       bool                                  `json:"array,omitempty"`     // 支持数组和嵌套
	ArrayType   SettingType                           `json:"arrayType,omitempty"` // Array=true 时有效
	Children    []Setting                             `json:"children,omitempty"`  // TypeObject 时递归子字段
	Validator   func(SettingType, any) (bool, string) `json:"-"`
}

Setting 配置项定义

func SettingsFromJSONSchema

func SettingsFromJSONSchema(data []byte) ([]Setting, error)

func SettingsFromStruct

func SettingsFromStruct(s any) ([]Setting, error)

func (Setting) FormatValue

func (s Setting) FormatValue(value any) string

FormatValue 格式化值用于显示

func (Setting) MarshalJSON

func (s Setting) MarshalJSON() ([]byte, error)

MarshalJSON 自定义 Setting 的 JSON 序列化

func (Setting) UnmarshalJSON

func (s Setting) UnmarshalJSON(data []byte) error

UnmarshalJSON 自定义 Setting 的 JSON 反序列化

func (Setting) Validate

func (s Setting) Validate(value any) (bool, string)

Validate 验证配置值

type SettingConstraint

type SettingConstraint struct {
	MinValue   *float64 `json:"min_value,omitempty"`
	MaxValue   *float64 `json:"max_value,omitempty"`
	Pattern    string   `json:"pattern,omitempty"`
	IsRequired bool     `json:"required,omitempty"`
}

SettingConstraint 配置约束

type SettingOption

type SettingOption struct {
	Value       any    `json:"value"`
	Label       string `json:"label"`
	Description string `json:"description,omitempty"`
}

SettingOption 配置选项

type SettingType

type SettingType string

SettingType 配置项类型

const (
	TypeBoolean SettingType = "boolean"
	TypeInteger SettingType = "integer"
	TypeFloat   SettingType = "float"
	TypeString  SettingType = "string"
	TypeEnum    SettingType = "enum"
	TypeRange   SettingType = "range"
	TypeColor   SettingType = "color"
	TypeObject  SettingType = "object"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL