♻️ Refactor config

Make it easier to setup stores
This commit is contained in:
Dan Jones 2025-01-26 20:07:45 -06:00
commit 6f06adc37d
12 changed files with 623 additions and 81 deletions

View file

@ -13,18 +13,33 @@ func TestLoadTomlMissing(t *testing.T) {
assert.Error(t, e)
}
type sqlSett struct {
Path string
Num int
}
func TestLoadTomlGood(t *testing.T) {
tmp, _ := os.CreateTemp("", "*.toml")
defer os.Remove(tmp.Name())
defer tmp.Close()
fmt.Fprintln(tmp, `name = "Cool"`)
fmt.Fprintln(tmp, "[conn]")
fmt.Fprintln(tmp, "[stores]")
fmt.Fprintln(tmp, `store = "sqlite"`)
fmt.Fprintln(tmp, "[conn.settings]")
fmt.Fprintln(tmp, "[stores.settings.sqlite]")
fmt.Fprintln(tmp, `path = "tmp"`)
fmt.Fprintln(tmp, `num = 42`)
c, e := LoadFromToml(tmp.Name())
assert.NoError(t, e)
assert.Equal(t, "Cool", c.Name)
assert.Equal(t, "sqlite", c.Conn.Store)
assert.Equal(t, int64(42), c.Conn.Settings["num"])
assert.Equal(t, "Cool", c.Name())
st, err := c.Store("")
assert.NoError(t, err)
assert.Equal(t, "sqlite", st.Name())
var sett sqlSett
err = st.Decode(&sett)
assert.NoError(t, err)
assert.Equal(t, 42, sett.Num)
assert.Equal(t, "tmp", sett.Path)
}