Moved os dependence to main.go and had db code return error
This commit is contained in:
parent
52646fbfb7
commit
506e7f64b6
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user