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"
|
"fmt"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
|
||||||
|
|
||||||
"gitea.deepak.science/deepak/gogmagog/config"
|
"gitea.deepak.science/deepak/gogmagog/config"
|
||||||
"gitea.deepak.science/deepak/gogmagog/models"
|
"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.
|
// 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" {
|
if dbConf.Type != "postgres" {
|
||||||
log.Fatalf("Unsupported database type: " + dbConf.Type)
|
return nil, fmt.Errorf("Unsupported database type: %v", dbConf.Type)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
connStr := fmt.Sprintf("user=%s password=%s host=%s port=%s database=%s sslmode=disable",
|
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)
|
tmp, err := sql.Open("pgx", connStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Could not connect to database: \n", err)
|
log.Fatal("Could not connect to database: \n", err)
|
||||||
os.Exit(1)
|
return nil, err
|
||||||
}
|
}
|
||||||
db := sqlx.NewDb(tmp, "pgx")
|
db := sqlx.NewDb(tmp, "pgx")
|
||||||
if err := db.Ping(); err != nil {
|
if err := db.Ping(); err != nil {
|
||||||
log.Fatal("database ping failed\n", err)
|
log.Fatal("database ping failed\n", err)
|
||||||
os.Exit(1)
|
return nil, err
|
||||||
}
|
}
|
||||||
driver, err := postgres.WithInstance(tmp, &postgres.Config{})
|
driver, err := postgres.WithInstance(tmp, &postgres.Config{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Could not create driver for db migration", err)
|
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)
|
m, err := migrate.NewWithDatabaseInstance("file://db/migrations", "postgres", driver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Could not perform migration", err)
|
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)
|
log.Fatalf("An error occurred while syncing the database.. %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
db.MapperFunc(util.ToSnake)
|
db.MapperFunc(util.ToSnake)
|
||||||
return &postgresStore{db: db}
|
return &postgresStore{db: db}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *postgresStore) SelectActions() ([]*models.Action, error) {
|
func (store *postgresStore) SelectActions() ([]*models.Action, error) {
|
||||||
|
6
main.go
6
main.go
@ -24,7 +24,11 @@ func main() {
|
|||||||
log.Print("App environment is " + env)
|
log.Print("App environment is " + env)
|
||||||
|
|
||||||
// DB
|
// 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 {
|
if store != nil {
|
||||||
log.Print("Got DB connection")
|
log.Print("Got DB connection")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user