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 func WriteConfigToFile(c *Config, 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", } }