* Switch to using in-mem sequence generator only when explicitly configured in connection string. Move spanner-related functions to pkg/util/spanner.
41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
// Package spanner should only be used from tests, or from enterprise code (eg. protected by build tags).
|
|
package spanner
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
spannerdriver "github.com/googleapis/go-sql-spanner"
|
|
"google.golang.org/api/option"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
)
|
|
|
|
func UsePlainText(connectorConfig spannerdriver.ConnectorConfig) bool {
|
|
if strval, ok := connectorConfig.Params["useplaintext"]; ok {
|
|
if val, err := strconv.ParseBool(strval); err == nil {
|
|
return val
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// ConnectorConfigToClientOptions is adapted from https://github.com/googleapis/go-sql-spanner/blob/main/driver.go#L341-L477, from version 1.11.1.
|
|
func ConnectorConfigToClientOptions(connectorConfig spannerdriver.ConnectorConfig) []option.ClientOption {
|
|
var opts []option.ClientOption
|
|
if connectorConfig.Host != "" {
|
|
opts = append(opts, option.WithEndpoint(connectorConfig.Host))
|
|
}
|
|
if strval, ok := connectorConfig.Params["credentials"]; ok {
|
|
opts = append(opts, option.WithCredentialsFile(strval))
|
|
}
|
|
if strval, ok := connectorConfig.Params["credentialsjson"]; ok {
|
|
opts = append(opts, option.WithCredentialsJSON([]byte(strval)))
|
|
}
|
|
if UsePlainText(connectorConfig) {
|
|
opts = append(opts,
|
|
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
|
|
option.WithoutAuthentication())
|
|
}
|
|
return opts
|
|
}
|