Documentation
¶
Overview ¶
包 configmanager 是一个基于 JSON 文件的轻量级配置存储库。
Index ¶
Constants ¶
const UnknownVersion = "UNKNOWN"
UnknownVersion 表示无法识别的数据版本号。
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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 创建配置文件, 因此除非发生 I/O 或解析错误,否则总会返回一个配置对象。 defaultJSON 应为合法的 JSON 对象(如通过 //go:embed 嵌入的模板文件)。 数值会从磁盘读回,所以类型统一为 float64。
func (*Config) DeclaredVersion ¶ added in v0.4.0
DeclaredVersion 返回 config.json 中声明的数据版本号。 无法识别时返回 UnknownVersion。
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。
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 文件的元数据部分,由客户端自行填充。