TTime/backend/internal/config/config.go

56 lines
1.1 KiB
Go
Raw Normal View History

package config
import (
"os"
"github.com/BurntSushi/toml"
)
// Config is the configuration for the application
// It defines how the TOML file should be structured
type Config struct {
// The port to listen on
Port int `toml:"port"`
// The path to the SQLite database
DbPath string `toml:"db_path"`
// The username to use for the database
DbUser string `toml:"db_user"`
// The password to use for the database
DbPass string `toml:"db_pass"`
// The name of the database
DbName string `toml:"db_name"`
}
// WriteConfigToFile writes a Config to a file
2024-02-27 23:11:27 +01:00
func (c *Config) WriteConfigToFile(filename string) error {
f, err := os.Create(filename)
if err != nil {
return err
}
defer f.Close()
return toml.NewEncoder(f).Encode(c)
}
// ReadConfigFromFile reads a Config from a file
func ReadConfigFromFile(filename string) (*Config, error) {
c := NewConfig()
_, err := toml.DecodeFile(filename, c)
if err != nil {
return nil, err
}
return c, nil
}
// NewConfig returns a new Config
func NewConfig() *Config {
return &Config{
Port: 8080,
DbPath: "./db.sqlite3",
DbUser: "username",
DbPass: "password",
DbName: "ttime",
}
}