package dbx import "fmt" // DBConfig provides a template for database connection configuration compatible // with go-toolkit/config. If used as a field in a struct, remember to include // the `validate:"dive"` tag to ensure that the validator checks sub-fields. type DBConfig struct { User string `validate:"required"` Password string `validate:"required"` URI string `validate:"hostname_port,required"` Name string `validate:"required"` MaxConn int `validate:"min=1,max=1000"` AutoMigrate bool DebugLog bool } // ConnectionString returns a connection string compatible with the given // SQL dialect. func (cfg *DBConfig) ConnectionString(dialect Dialect) string { switch dialect { case DialectPostgres: return fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", cfg.User, cfg.Password, cfg.URI, cfg.Name) case DialectMySQL: return fmt.Sprintf("%s:%s@tcp(%s)/%s?parseTime=true&loc=Local", cfg.User, cfg.Password, cfg.URI, cfg.Name) default: panic("unsupported dialect: " + string(dialect)) } }