diff --git a/ana.go b/ana.go index e6aae73..224e1f8 100644 --- a/ana.go +++ b/ana.go @@ -16,7 +16,10 @@ func main() { } // setup database connection - conn := db.SetupDatabaseConnection() + conn, err := db.SetupDatabaseConnection() + if err != nil { + log.Fatal(err) + } defer conn.Close() // parse & run cli commands diff --git a/db/db.go b/db/db.go index 519429f..86b4654 100644 --- a/db/db.go +++ b/db/db.go @@ -4,26 +4,26 @@ import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" - "log" "os" ) var Conn *sql.DB -func SetupDatabaseConnection() *sql.DB { +// SetupDatabaseConnection opens up & returns a SQL connection +func SetupDatabaseConnection() (*sql.DB, error) { var err error var dataSourceName = fmt.Sprintf("%s:%s@%s/%s", os.Getenv("ANA_DATABASE_USER"), os.Getenv("ANA_DATABASE_PASSWORD"), os.Getenv("ANA_DATABASE_HOST"), os.Getenv("ANA_DATABASE_NAME")) Conn, err = sql.Open("mysql", dataSourceName) if err != nil { - log.Fatal(err.Error()) // Just for example purpose. You should use proper error handling instead of panic + return nil, err } - // Open doesn't open a connection. Validate DSN data: + // Open doesn't open a connection right away. Validate DSN by calling Ping(). err = Conn.Ping() if err != nil { - log.Fatal(err.Error()) // proper error handling instead of panic in your app + return nil, err } - return Conn + return Conn, nil }