statping/types/configs/file.go

73 lines
1.6 KiB
Go
Raw Normal View History

2020-03-04 10:29:00 +00:00
package configs
import (
"github.com/pkg/errors"
2020-03-09 18:17:55 +00:00
"github.com/statping/statping/utils"
2020-03-04 10:29:00 +00:00
"os"
"path/filepath"
2020-04-16 09:57:00 +00:00
"strings"
2020-03-04 10:29:00 +00:00
)
var log = utils.Log
2020-04-19 08:03:50 +00:00
func ConnectConfigs(configs *DbConfig, retry bool) error {
err := Connect(configs, retry)
2020-03-04 10:29:00 +00:00
if err != nil {
return errors.Wrap(err, "error connecting to database")
}
if err := configs.Save(utils.Directory); err != nil {
return errors.Wrap(err, "error saving configuration")
}
return nil
}
func LoadConfigs() (*DbConfig, error) {
writeAble, err := utils.DirWritable(utils.Directory)
if err != nil {
return nil, err
}
if !writeAble {
return nil, errors.Errorf("Directory %s is not writable!", utils.Directory)
}
2020-03-04 15:58:42 +00:00
return LoadConfigFile(utils.Directory)
2020-03-04 10:29:00 +00:00
}
2020-04-16 09:57:00 +00:00
func findDbFile(configs *DbConfig) (string, error) {
location := utils.Directory + "/" + SqliteFilename
2020-03-04 10:29:00 +00:00
if configs == nil {
2020-04-16 09:57:00 +00:00
file, err := findSQLin(utils.Directory)
if err != nil {
log.Errorln(err)
return location, nil
2020-04-16 09:57:00 +00:00
}
location = file
2020-03-04 10:29:00 +00:00
}
2020-04-16 09:57:00 +00:00
if configs != nil && configs.SqlFile != "" {
return configs.SqlFile, nil
2020-03-04 10:29:00 +00:00
}
2020-04-16 09:57:00 +00:00
return location, nil
2020-03-04 10:29:00 +00:00
}
2020-04-16 09:57:00 +00:00
func findSQLin(path string) (string, error) {
2020-03-04 10:29:00 +00:00
filename := SqliteFilename
2020-04-16 09:57:00 +00:00
var found []string
2020-03-04 10:29:00 +00:00
err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
if filepath.Ext(path) == ".db" {
filename = info.Name()
2020-04-16 09:57:00 +00:00
found = append(found, filename)
2020-03-04 10:29:00 +00:00
}
return nil
})
if err != nil {
2020-04-16 09:57:00 +00:00
return filename, err
}
if len(found) > 1 {
return filename, errors.Errorf("found multiple database files: %s", strings.Join(found, ", "))
2020-03-04 10:29:00 +00:00
}
2020-04-16 09:57:00 +00:00
return filename, nil
2020-03-04 10:29:00 +00:00
}