This repository has been archived on 2026-05-07. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
ccrm/server/internal/config/config.go

63 lines
1 KiB
Go

package config
import (
"os"
"gopkg.in/yaml.v3"
)
type Config struct {
Server ServerConfig `yaml:"server"`
Database DatabaseConfig `yaml:"database"`
Auth AuthConfig `yaml:"auth"`
}
type ServerConfig struct {
Listen string `yaml:"listen"`
}
type DatabaseConfig struct {
Path string `yaml:"path"`
}
type AuthConfig struct {
DaemonAPIKey string `yaml:"daemon_api_key"`
DashboardToken string `yaml:"dashboard_token"`
}
func DefaultConfig() *Config {
return &Config{
Server: ServerConfig{
Listen: ":8080",
},
Database: DatabaseConfig{
Path: "ccrm.db",
},
Auth: AuthConfig{
DaemonAPIKey: "change-me-daemon-key",
DashboardToken: "change-me-dashboard-token",
},
}
}
func Load(path string) (*Config, error) {
cfg := DefaultConfig()
if path == "" {
return cfg, nil
}
data, err := os.ReadFile(path)
if err != nil {
if os.IsNotExist(err) {
return cfg, nil
}
return nil, err
}
if err := yaml.Unmarshal(data, cfg); err != nil {
return nil, err
}
return cfg, nil
}