36 lines
803 B
Go
36 lines
803 B
Go
package config
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
type Config struct {
|
|
ServerConfig ServerConfig `toml:"SERVICE"`
|
|
BaseURL string `toml:"BASE_URL"`
|
|
SessionLifetime int `toml:"SESSION_LIFETIME_SECONDS"`
|
|
DBURI string `toml:"DBURI"`
|
|
CookieSecret string `toml:"COOKIE_SECRET"`
|
|
}
|
|
|
|
type ServerConfig struct {
|
|
Host string `toml:"HOST"`
|
|
Port string `toml:"PORT"`
|
|
}
|
|
|
|
func LoadConfigOrDefault(fn string) *Config {
|
|
if fn == "" {
|
|
fn = "config.toml"
|
|
}
|
|
config := &Config{}
|
|
_, err := toml.DecodeFile(fn, &config)
|
|
if err != nil {
|
|
slog.Warn("failed to read config from file, loading default", "error", err)
|
|
config.BaseURL = "https://localhost:3000"
|
|
config.SessionLifetime = 300
|
|
config.CookieSecret = "test"
|
|
}
|
|
return config
|
|
}
|