Moved os dependence to main.go and had db code return error

This commit is contained in:
Deepak Mallubhotla 2020-12-29 10:39:42 -06:00
parent 52646fbfb7
commit 506e7f64b6
Signed by: deepak
GPG Key ID: 64BF53A3369104E7
2 changed files with 19 additions and 12 deletions

View File

@ -5,7 +5,6 @@ import (
"fmt"
"github.com/jmoiron/sqlx"
"log"
"os"
"gitea.deepak.science/deepak/gogmagog/config"
"gitea.deepak.science/deepak/gogmagog/models"
@ -23,11 +22,10 @@ type postgresStore struct {
}
// GetStore provides a store to back the model based on a postgres connection.
func GetStore(dbConf *config.DBConfig) models.Store {
func GetStore(dbConf *config.DBConfig) (models.Store, error) {
if dbConf.Type != "postgres" {
log.Fatalf("Unsupported database type: " + dbConf.Type)
os.Exit(1)
return nil, fmt.Errorf("Unsupported database type: %v", dbConf.Type)
}
connStr := fmt.Sprintf("user=%s password=%s host=%s port=%s database=%s sslmode=disable",
@ -40,28 +38,33 @@ func GetStore(dbConf *config.DBConfig) models.Store {
tmp, err := sql.Open("pgx", connStr)
if err != nil {
log.Fatal("Could not connect to database: \n", err)
os.Exit(1)
return nil, err
}
db := sqlx.NewDb(tmp, "pgx")
if err := db.Ping(); err != nil {
log.Fatal("database ping failed\n", err)
os.Exit(1)
return nil, err
}
driver, err := postgres.WithInstance(tmp, &postgres.Config{})
if err != nil {
log.Fatal("Could not create driver for db migration", err)
os.Exit(1)
return nil, err
}
m, err := migrate.NewWithDatabaseInstance("file://db/migrations", "postgres", driver)
if err != nil {
log.Fatal("Could not perform migration", err)
os.Exit(1)
return nil, err
}
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
if err := m.Up(); err != nil {
if err == migrate.ErrNoChange {
log.Print("No migration needed.")
} else {
log.Fatalf("An error occurred while syncing the database.. %v", err)
return nil, err
}
}
db.MapperFunc(util.ToSnake)
return &postgresStore{db: db}
return &postgresStore{db: db}, nil
}
func (store *postgresStore) SelectActions() ([]*models.Action, error) {

View File

@ -24,7 +24,11 @@ func main() {
log.Print("App environment is " + env)
// DB
store := db.GetStore(&conf.Db)
store, err := db.GetStore(&conf.Db)
if err != nil {
log.Fatal("Could not get store", err)
os.Exit(1)
}
if store != nil {
log.Print("Got DB connection")