2020-03-04 10:29:00 +00:00
|
|
|
package configs
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"github.com/hunterlong/statping/database"
|
|
|
|
"github.com/hunterlong/statping/utils"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
)
|
|
|
|
|
|
|
|
var log = utils.Log
|
|
|
|
|
2020-03-06 22:18:06 +00:00
|
|
|
func ConnectConfigs(configs *DbConfig, initiate bool) error {
|
2020-03-04 14:20:47 +00:00
|
|
|
err := Connect(configs, true)
|
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")
|
|
|
|
}
|
|
|
|
|
|
|
|
exists := database.DB().HasTable("core")
|
2020-03-06 22:18:06 +00:00
|
|
|
if !exists && initiate {
|
2020-03-04 10:29:00 +00:00
|
|
|
return InitialSetup(configs)
|
|
|
|
}
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
|
|
|
|
dbConn := utils.Getenv("DB_CONN", "").(string)
|
|
|
|
if dbConn != "" {
|
|
|
|
configs, err := loadConfigEnvs()
|
|
|
|
if err != nil {
|
2020-03-04 15:58:42 +00:00
|
|
|
return LoadConfigFile(utils.Directory)
|
2020-03-04 10:29:00 +00:00
|
|
|
}
|
|
|
|
return configs, nil
|
|
|
|
}
|
|
|
|
|
2020-03-04 15:58:42 +00:00
|
|
|
return LoadConfigFile(utils.Directory)
|
2020-03-04 10:29:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func findDbFile(configs *DbConfig) string {
|
|
|
|
if configs == nil {
|
|
|
|
return findSQLin(utils.Directory)
|
|
|
|
}
|
|
|
|
if configs.SqlFile != "" {
|
|
|
|
return configs.SqlFile
|
|
|
|
}
|
|
|
|
return utils.Directory + "/" + SqliteFilename
|
|
|
|
}
|
|
|
|
|
|
|
|
func findSQLin(path string) string {
|
|
|
|
filename := SqliteFilename
|
|
|
|
err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
|
|
|
if info.IsDir() {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
if filepath.Ext(path) == ".db" {
|
|
|
|
fmt.Println("DB file is now: ", info.Name())
|
|
|
|
filename = info.Name()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
log.Error(err)
|
|
|
|
}
|
|
|
|
return filename
|
|
|
|
}
|