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);
        }
Beispiel #2
0
 private static object[] ScalarTest(string name, BigqueryParameterType type, object parameterValue, string expectedValue) =>
 new object[]
 {
     name,
     new BigqueryParameter(type, parameterValue),
     ScalarParameter(type, expectedValue)
 };
Beispiel #3
0
 private static QueryParameter ScalarParameter(BigqueryParameterType type, string value) =>
 new QueryParameter
 {
     ParameterType = new QueryParameterType {
         Type = EnumMap.ToApiValue(type)
     },
     ParameterValue = new QueryParameterValue {
         Value = value
     }
 };
Beispiel #4
0
        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)
 {
 }