private static QueryParameter PopulateArrayParameter(QueryParameter parameter, object value, BigqueryParameterType?arrayType) { if (value == null) { throw new InvalidOperationException("The value of an array parameter cannot be null"); } if (!IsArrayValue(value)) { throw new InvalidOperationException($"Invalid value for array parameter: {value.GetType()}"); } List <object> values = ((IEnumerable)value).Cast <object>().ToList(); if (values.Any(v => v == null)) { throw new InvalidOperationException("Array parameter values cannot contain null elements"); } BigqueryParameterType actualArrayType = arrayType ?? s_typeMapping[GetArrayElementType(value)]; parameter.ParameterType = new QueryParameterType { Type = EnumMap.ToApiValue(BigqueryParameterType.Array), ArrayType = new QueryParameterType { Type = EnumMap.ToApiValue(actualArrayType) } }; var parameterValues = values .Select(p => new BigqueryParameter(actualArrayType, p).ToQueryParameter(BigqueryParameterMode.Positional).ParameterValue) .ToList(); parameter.ParameterValue = new QueryParameterValue { ArrayValues = parameterValues }; return(parameter); }
private static object[] ScalarTest(string name, BigqueryParameterType type, object parameterValue, string expectedValue) => new object[] { name, new BigqueryParameter(type, parameterValue), ScalarParameter(type, expectedValue) };
private static QueryParameter ScalarParameter(BigqueryParameterType type, string value) => new QueryParameter { ParameterType = new QueryParameterType { Type = EnumMap.ToApiValue(type) }, ParameterValue = new QueryParameterValue { Value = value } };
public void TypeInference(string name, object value, BigqueryParameterType expectedType) { var parameter = new BigqueryParameter(); parameter.Value = value; var queryParameter = parameter.ToQueryParameter(BigqueryParameterMode.Positional); var actualType = EnumMap <BigqueryParameterType> .ToValue(queryParameter.ParameterType.Type); Assert.Equal(expectedType, actualType); }
/// <summary> /// Constructs a parameter with no name, initial value or type. /// </summary> /// <param name="type">The initial type of the parameter.</param> public BigqueryParameter(BigqueryParameterType type) : this(null, type, null) { }