github.com/goravel/framework@v1.13.9/testing/docker/sqlserver.go (about) 1 package docker 2 3 import ( 4 "fmt" 5 6 "github.com/ory/dockertest/v3" 7 "github.com/spf13/cast" 8 9 contractsconfig "github.com/goravel/framework/contracts/config" 10 "github.com/goravel/framework/contracts/database/orm" 11 "github.com/goravel/framework/contracts/testing" 12 ) 13 14 type Sqlserver struct { 15 config contractsconfig.Config 16 connection string 17 } 18 19 func NewSqlserver(config contractsconfig.Config, connection string) *Sqlserver { 20 return &Sqlserver{ 21 config: config, 22 connection: connection, 23 } 24 } 25 26 func (receiver *Sqlserver) Config(resource *dockertest.Resource) testing.Config { 27 return testing.Config{ 28 Host: "127.0.0.1", 29 Port: cast.ToInt(resource.GetPort("1433/tcp")), 30 Database: "msdb", 31 Username: "sa", 32 Password: receiver.config.GetString(fmt.Sprintf("database.connections.%s.password", receiver.connection)), 33 } 34 } 35 36 func (receiver *Sqlserver) Clear(pool *dockertest.Pool, resource *dockertest.Resource) error { 37 return pool.Purge(resource) 38 } 39 40 func (receiver *Sqlserver) Name() orm.Driver { 41 return orm.DriverSqlserver 42 } 43 44 func (receiver *Sqlserver) Image() *dockertest.RunOptions { 45 password := receiver.config.GetString(fmt.Sprintf("database.connections.%s.password", receiver.connection)) 46 47 return &dockertest.RunOptions{ 48 Repository: "mcr.microsoft.com/mssql/server", 49 Tag: "latest", 50 Env: []string{ 51 "MSSQL_SA_PASSWORD=" + password, 52 "ACCEPT_EULA=Y", 53 }, 54 } 55 }