From 49766901293631aeabfc96e8d80aba305f420630 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 2 Oct 2025 18:36:06 +0200 Subject: feat(backend): config to set domain --- backend/config.go | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'backend/config.go') diff --git a/backend/config.go b/backend/config.go index b7624fd..98aeebe 100644 --- a/backend/config.go +++ b/backend/config.go @@ -1,3 +1,49 @@ package backend -type Config struct{} +import ( + "errors" + "log/slog" + "os" + + "github.com/pelletier/go-toml/v2" +) + +type Config struct { + Domain string `toml:"domain"` +} + +func (c *Config) DefaultValues() { + c.Domain = "example.org" +} + +func LoadConfig(path string) (*Config, bool) { + b, err := os.ReadFile(path) + var config Config + if err != nil { + if !errors.Is(err, os.ErrNotExist) { + slog.Error("reading config file", "error", err) + return nil, false + } + slog.Warn("config file not found", "path", path) + slog.Info("creating a new config file", "path", path) + config.DefaultValues() + b, err = toml.Marshal(&config) + if err != nil { + slog.Error("marshalling config file", "error", err) + return nil, false + } + err = os.WriteFile(path, b, 0660) + if err != nil { + slog.Error("writing config file", "error", err, "path", path) + } else { + slog.Info("config file created", "path", path) + } + return nil, false + } + err = toml.Unmarshal(b, &config) + if err != nil { + slog.Error("unmarshalling config file", "error", err) + return nil, false + } + return &config, true +} -- cgit v1.2.3