func()

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
}