mirror of https://github.com/statping/statping
72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package configs
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
"github.com/statping/statping/utils"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
var log = utils.Log
|
|
|
|
func ConnectConfigs(configs *DbConfig, retry bool) error {
|
|
err := Connect(configs, retry)
|
|
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)
|
|
}
|
|
|
|
return LoadConfigFile(utils.Directory)
|
|
}
|
|
|
|
func findDbFile(configs *DbConfig) (string, error) {
|
|
location := utils.Directory + "/" + SqliteFilename
|
|
if configs == nil {
|
|
file, err := findSQLin(utils.Directory)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
location = file
|
|
}
|
|
if configs != nil && configs.SqlFile != "" {
|
|
return configs.SqlFile, nil
|
|
}
|
|
return location, nil
|
|
}
|
|
|
|
func findSQLin(path string) (string, error) {
|
|
filename := SqliteFilename
|
|
var found []string
|
|
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()
|
|
found = append(found, filename)
|
|
}
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return filename, err
|
|
}
|
|
if len(found) > 1 {
|
|
return filename, errors.Errorf("found multiple database files: %s", strings.Join(found, ", "))
|
|
}
|
|
return filename, nil
|
|
}
|