diff --git a/cmd/server.go b/cmd/server.go index 94b180c..72d97da 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -34,8 +34,10 @@ func main() { config.LoadENV() // initialize database - db := config.InitDB() - + db, err := config.InitDB() + if err != nil { + logger.Log.Error(err) + } // initialize repository pokemonRepo := repository.NewPokemonRepository(db) typeRepo := repository.NewTypeRepository(db) diff --git a/config/database.go b/config/database.go index cdfd06c..198bf7c 100644 --- a/config/database.go +++ b/config/database.go @@ -2,6 +2,7 @@ package config import ( "database/sql" + "fmt" "os" "time" @@ -17,18 +18,22 @@ type Database struct { } // InitDB - . -func InitDB() *Database { - db, err := sql.Open("mysql", os.Getenv("DATA_SOURCE")) +func InitDB() (*Database, error) { + dataSource := os.Getenv("DATA_SOURCE") + if dataSource == "" { + return nil, fmt.Errorf("DATA_SOURCE environment variable is empty or not set") + } + + db, err := sql.Open("mysql", dataSource) if err != nil { - logger.Log.Println(errors.Wrap(err, "database connection")) - panic(err) + return nil, fmt.Errorf("failed to open database connection: %w", err) } db.SetMaxOpenConns(10) db.SetConnMaxIdleTime(time.Minute * 10) - logger.Log.Println("database connected...") - return &Database{DB: db} + fmt.Println("Database connected...") + return &Database{DB: db}, nil } // Close - close db diff --git a/server.exe b/server.exe new file mode 100644 index 0000000..6285707 Binary files /dev/null and b/server.exe differ