From cd7f919eb25d94282d778cba5889baca176b129b Mon Sep 17 00:00:00 2001 From: Deepak Date: Thu, 31 Dec 2020 18:56:21 -0600 Subject: [PATCH] Removes calls to log.Fatal, adds check for null store --- main.go | 13 +++++++------ models/models.go | 7 +++++++ models/models_test.go | 9 +++++++++ store/store.go | 10 +++++----- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 61fb381..acc2a24 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,7 @@ func main() { // Config conf, err := config.GetConf("config") if err != nil { - log.Fatal("Could not get config", err) + log.Println("Could not get config", err) os.Exit(1) } @@ -25,23 +25,24 @@ func main() { // DB store, err := store.GetStore(&conf.Db) if err != nil { - log.Fatal("Could not get store", err) + log.Println("Could not get store", err) os.Exit(1) + } if store != nil { - log.Print("Got DB connection") + log.Println("Got DB connection") } m := models.New(store) if m != nil { - log.Print("created model") + log.Println("created model") } router := routes.NewRouter(m) - log.Print("Running server on " + port) + log.Println("Running server on " + port) http.ListenAndServe(":"+port, router) - log.Print("App environment is " + env) + log.Println("App environment is " + env) } diff --git a/models/models.go b/models/models.go index 065243e..19acba9 100644 --- a/models/models.go +++ b/models/models.go @@ -1,5 +1,9 @@ package models +import ( + "fmt" +) + // Store represents the backing store. type Store interface { ConnectionLive() error @@ -24,5 +28,8 @@ func New(store Store) *Model { // Healthy returns an error if the connection is healthy. // Wrapper over db.Ping() func (m *Model) Healthy() error { + if m.Store == nil { + return fmt.Errorf("No store available") + } return m.ConnectionLive() } diff --git a/models/models_test.go b/models/models_test.go index a7d64e7..6990ece 100644 --- a/models/models_test.go +++ b/models/models_test.go @@ -100,3 +100,12 @@ func TestModelHealthy(t *testing.T) { err := m.Healthy() assert.Nil(err) } + +func TestNilModelUnhealthy(t *testing.T) { + assert := assert.New(t) + + m := models.New(nil) + + err := m.Healthy() + assert.NotNil(err) +} diff --git a/store/store.go b/store/store.go index f1723f1..97f87fb 100644 --- a/store/store.go +++ b/store/store.go @@ -40,30 +40,30 @@ func createPostgresDB(dbConf *config.DBConfig) (*sqlx.DB, error) { tmp, err := sql.Open("pgx", connStr) if err != nil { - log.Fatal("Could not connect to database: \n", err) + log.Print("Could not connect to database: \n", err) return nil, err } db := sqlx.NewDb(tmp, "pgx") if err := db.Ping(); err != nil { - log.Fatal("database ping failed\n", err) + log.Print("database ping failed\n", err) return nil, err } driver, err := postgres.WithInstance(db.DB, &postgres.Config{}) if err != nil { - log.Fatal("Could not create driver for db migration", err) + log.Print("Could not create driver for db migration", err) return nil, err } m, err := migrate.NewWithDatabaseInstance("file://store/migrations", "postgres", driver) if err != nil { - log.Fatal("Could not perform migration", err) + log.Print("Could not perform migration", err) return nil, err } 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.Printf("An error occurred while syncing the database.. %v", err) return nil, err } }