diff --git a/database.go b/database.go index 2351210..01392b7 100644 --- a/database.go +++ b/database.go @@ -8,9 +8,26 @@ import ( "gorm.io/driver/postgres" "gorm.io/driver/sqlite" "gorm.io/gorm" + "time" ) func connectToDatabase(c config.Config) (db *gorm.DB, err error) { + return connectLoop(c, 0) +} + +func connectLoop(c config.Config, count int) (db *gorm.DB, err error) { + db, err = attemptConnection(c) + if err != nil { + if count > 300 { + return db, fmt.Errorf("could not connect to database after 300 seconds") + } + time.Sleep(1 * time.Second) + return connectLoop(c, count+1) + } + return db, err +} + +func attemptConnection(c config.Config) (db *gorm.DB, err error) { if c.Database == "sqlite" { // In-memory sqlite if no database name is specified dsn := "file::memory:?cache=shared" diff --git a/main.go b/main.go index bbd478a..73bbb96 100644 --- a/main.go +++ b/main.go @@ -26,7 +26,6 @@ func Run() { if err != nil { log.Fatalln(err) } - log.Println(db) err = migrateDatabase(db) if err != nil {