Documentation
¶
Overview ¶
包 configmanager 是一个基于 JSON 文件的轻量级配置存储库。
Index ¶
- Constants
- func RepairAppConfig(appName string, defaultJSON []byte) error
- type CheckResult
- type Config
- func (c *Config) Check(schema Schema) CheckResult
- func (c *Config) DeclaredVersion() string
- func (c *Config) DecodeFields(target any) error
- func (c *Config) Get(key string) (any, bool)
- func (c *Config) Meta() map[string]any
- func (c *Config) Normalize(schema Schema) error
- func (c *Config) Path() string
- func (c *Config) ResolveVersion(schemaVersion string)
- func (c *Config) ResolvedVersion() string
- func (c *Config) Save() error
- func (c *Config) Set(key string, value any)
- func (c *Config) SetFieldsFrom(source any) error
- type CorruptConfigError
- type FieldDef
- type FieldType
- type Schema
- type SchemaFile
- type SchemaMeta
Constants ¶
const UnknownVersion = "UNKNOWN"
UnknownVersion 表示无法识别的数据版本号。
Variables ¶
This section is empty.
Functions ¶
func RepairAppConfig ¶ added in v0.5.0
RepairAppConfig 修复 appName 对应的损坏配置文件。预留接口,尚未实现; 未来版本将基于 defaultJSON 重建配置文件或引导用户修复。
Types ¶
type CheckResult ¶ added in v0.3.0
type CheckResult int
CheckResult 表示 data 相对于 schema 的校验状态。
const ( Valid CheckResult = iota // 严格符合 schema MissingDefaults // 仅缺少带默认值的非必填字段 ExtraFields // 仅有 schema 未定义的多余字段 MissingAndExtra // 既缺带默认值的字段,又有多余字段 Invalid // 必填缺失或类型不匹配 )
type Config ¶
type Config struct {
// contains filtered or unexported fields
}
Config 持有以磁盘 JSON 文件为后端的配置值。 data 存储完整的 {meta, fields} 两层结构。
func LoadAppConfig ¶
LoadAppConfig 加载 appName 对应的配置。首次运行时从 defaultJSON 创建配置文件, 因此除非无法获取用户配置目录或 defaultJSON 本身非法,否则总会返回一个配置对象。 已存在的配置文件无法读取或解析时,返回 nil 和 *CorruptConfigError, 不提供默认值降级,也不覆盖磁盘上的坏文件。 defaultJSON 应为合法的 JSON 对象(如通过 //go:embed 嵌入的模板文件)。 数值会从磁盘读回,所以类型统一为 float64。
func (*Config) Check ¶ added in v0.5.0
func (c *Config) Check(schema Schema) CheckResult
Check 用 schema 校验当前 fields 层,返回校验状态。 等价于在 fields() 上调用 Schema.Check,但无需手动提取 map。
func (*Config) DeclaredVersion ¶ added in v0.4.0
DeclaredVersion 返回 config.json 中声明的数据版本号。 无法识别时返回 UnknownVersion。
func (*Config) DecodeFields ¶ added in v0.5.0
DecodeFields 将 fields 层按 JSON tag 解码到 target(必须为指针)。 经 JSON 往返实现:fields 中缺失的键不会改动 target 的对应字段, 因此指针字段可区分"未设置"(nil)与"显式零值"(指向零值的指针)。
func (*Config) Normalize ¶ added in v0.5.0
Normalize 按 schema 规范化当前 fields 层:补全缺失的默认值、删除多余字段。 Valid 状态下为 no-op(直接返回 nil);MissingDefaults / ExtraFields / MissingAndExtra 状态下执行规范化并写回;Invalid 状态返回错误。
func (*Config) ResolveVersion ¶ added in v0.4.0
ResolveVersion 在 schema 校验通过后调用,将 resolvedVersion 设为 schema 的 meta.version。若 schemaVersion 为空则设为 UnknownVersion。
func (*Config) ResolvedVersion ¶ added in v0.4.0
ResolvedVersion 返回经 schema 校验后确定的实际数据版本号。 未经校验或无法识别时返回 UnknownVersion。
func (*Config) SetFieldsFrom ¶ added in v0.5.0
SetFieldsFrom 将 source 按 JSON tag 编码后整体替换 fields 层,meta 层不受影响。 source 为 nil 或无法编码为 JSON 对象时返回错误。
type CorruptConfigError ¶ added in v0.5.0
CorruptConfigError 表示已存在的配置文件无法读取或解析。 调用方应用 errors.As 识别本错误,向用户报错并退出,不得静默改用默认值。
func (*CorruptConfigError) Error ¶ added in v0.5.0
func (e *CorruptConfigError) Error() string
Error 实现 error 接口,信息携带配置文件路径与原始错误。
func (*CorruptConfigError) Unwrap ¶ added in v0.5.0
func (e *CorruptConfigError) Unwrap() error
Unwrap 返回原始错误,支持 errors.Is/As 链式判断。
type FieldDef ¶ added in v0.3.0
type FieldDef struct {
Type FieldType
Required bool
Default any // nil 表示无默认值;仅当 Required 为 false 时有意义
}
FieldDef 描述一个配置键:期望类型、是否必填,以及可选的默认值(仅在非必填时生效)。
type Schema ¶ added in v0.3.0
Schema 是以配置键名为索引的字段定义集合。 它有意独立于 Config,使调用方自行掌控 schema 与校验生命周期。
func ParseSchema ¶ added in v0.4.0
ParseSchema 从 JSON 字节中解析出 Schema(仅提取 fields 部分)。 客户端可通过返回的 SchemaFile 访问 meta 信息。
type SchemaFile ¶ added in v0.4.0
type SchemaFile struct {
Meta SchemaMeta `json:"meta"`
Fields map[string]FieldDef `json:"fields"`
}
SchemaFile 是 schema.json 的顶层结构,将元数据与字段定义分组。
func ParseSchemaFile ¶ added in v0.4.0
func ParseSchemaFile(data []byte) (*SchemaFile, error)
ParseSchemaFile 从 JSON 字节中解析出完整的 SchemaFile(含 meta)。
type SchemaMeta ¶ added in v0.4.0
type SchemaMeta struct {
Version string `json:"version"`
}
SchemaMeta 是 schema 文件的元数据部分,由客户端自行填充。