package postgres import ( "fmt" "time" "github.com/aykhans/oh-my-chat/internal/adapter/config" postgresDriver "gorm.io/driver/postgres" "gorm.io/gorm" ) func NewDB(config *config.PostgresConfig) (*gorm.DB, error) { dsn := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%s sslmode=%s TimeZone=%s", config.Host, config.User, config.Password, config.DBName, config.Port, "disable", "UTC", ) var db *gorm.DB var err error for range 3 { db, err = gorm.Open(postgresDriver.Open(dsn), &gorm.Config{}) if err == nil { break } time.Sleep(3 * time.Second) } if err != nil { return nil, err } return db, nil }