in wrappers/golang/pgadapter.go [236:296]
func (config Config) toArguments() ([]string, error) {
if config.CredentialsFile != "" && config.RequireAuthentication {
return nil, fmt.Errorf("cannot set both a credentials file and require authentication")
}
if config.Instance != "" && config.Project == "" {
return nil, fmt.Errorf("you must also set a project when you set an instance")
}
if config.Database != "" && config.Instance == "" {
return nil, fmt.Errorf("you must also set an instance when you set a database")
}
if config.MinSessions < 0 {
return nil, fmt.Errorf("MinSessions must be non-negative")
}
if config.MaxSessions < 0 {
return nil, fmt.Errorf("MaxSessions must be non-negative")
}
if config.NumChannels < 0 {
return nil, fmt.Errorf("NumChannels must be non-negative")
}
if config.MinSessions > config.MaxSessions {
return nil, fmt.Errorf("MaxSessions must be >= MinSessions")
}
var cmd []string
if config.Project != "" {
cmd = append(cmd, "-p", config.Project)
}
if config.Instance != "" {
cmd = append(cmd, "-i", config.Instance)
}
if config.Database != "" {
cmd = append(cmd, "-d", config.Database)
}
if config.RequireAuthentication {
cmd = append(cmd, "-a")
}
if config.CredentialsFile != "" {
switch config.ExecutionEnvironment.(type) {
case *Docker:
cmd = append(cmd, "-c", "/credentials.json")
case *Java:
cmd = append(cmd, "-c", config.CredentialsFile)
}
}
if config.MinSessions > 0 || config.MaxSessions > 0 || config.NumChannels > 0 || config.DatabaseRole != "" {
jdbcOpts := ""
if config.MinSessions > 0 {
jdbcOpts += fmt.Sprintf("minSessions=%d;", config.MinSessions)
}
if config.MaxSessions > 0 {
jdbcOpts += fmt.Sprintf("maxSessions=%d;", config.MaxSessions)
}
if config.NumChannels > 0 {
jdbcOpts += fmt.Sprintf("numChannels=%d;", config.NumChannels)
}
if config.DatabaseRole != "" {
jdbcOpts += fmt.Sprintf("databaseRole=%s;", config.DatabaseRole)
}
cmd = append(cmd, "-r", jdbcOpts)
}
return cmd, nil
}