gotidb/cmd/server/config.go

54 lines
1.1 KiB
Go

package main
import (
"os"
"gopkg.in/yaml.v3"
)
// Config 应用程序配置结构
type Config struct {
RestAddr string `yaml:"rest_addr"`
WsAddr string `yaml:"ws_addr"`
MetricsAddr string `yaml:"metrics_addr"`
NATSURL string `yaml:"nats_url"`
PersistenceType string `yaml:"persistence_type"`
PersistenceDir string `yaml:"persistence_dir"`
SyncEvery int `yaml:"sync_every"`
}
func LoadConfig(path string) (*Config, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
var config Config
decoder := yaml.NewDecoder(file)
if err := decoder.Decode(&config); err != nil {
return nil, err
}
return &config, nil
}
func GenerateSampleConfig(path string) error {
config := Config{
MetricsAddr: ":8082",
NATSURL: "nats://localhost:4222",
PersistenceDir: "./data",
PersistenceType: "memory",
RestAddr: ":8080",
SyncEvery: 1000,
WsAddr: ":8081",
}
// 序列化yaml到path
file, err := os.Create(path)
if err != nil {
return err
}
defer file.Close()
return yaml.NewEncoder(file).Encode(config)
}