func (ws *DbStrategy) WithStartupTimeout(startupTimeout time.Duration) *DbStrategy {
	ws.startupTimeout = startupTimeout
	return ws
}
fluent builders for each property
since go has neither covariance nor generics, the return type must be the type of the concrete implementation
this is true for all properties, even the "shared" ones like startupTimeout
WithStartupTimeout can be used to change the default startup timeout
package common
import (
	"context"
	"github.com/pkg/errors"
	"strings"
	"time"
	"github.com/docker/go-connections/nat"
	"github.com/testcontainers/testcontainers-go"
	"github.com/testcontainers/testcontainers-go/wait"
)
var _ wait.Strategy = (*DbStrategy)(nil)
type DbStrategy struct {
	startupTimeout time.Duration
	driverName     string
	dataSourceName string
	port           nat.Port
	PollInterval   time.Duration
}
func ForDb(driverName string, dataSourceName string, port string) *DbStrategy {
	return &DbStrategy{
		startupTimeout: 60 * time.Second,
		driverName:     driverName,
		dataSourceName: dataSourceName,
		port:           nat.Port(port),
		PollInterval:   500 * time.Millisecond,
	}
}