private static ParamBinding BuildParamFromSimpleType(object param, Type paramType) { var underlyingType = Nullable.GetUnderlyingType(paramType); if (underlyingType != null) { paramType = underlyingType; } var stringValue = param == null ? null : string.Format(CultureInfo.InvariantCulture, "{0}", param); if (TextTypes.Contains(paramType)) { return new ParamBinding() { Type = "TEXT", Value = stringValue } } ; if (FixedTypes.Contains(paramType)) { return new ParamBinding() { Type = "FIXED", Value = stringValue } } ; if (paramType == typeof(bool)) { return new ParamBinding() { Type = "BOOLEAN", Value = stringValue } } ; if (RealTypes.Contains(paramType)) { return new ParamBinding() { Type = "REAL", Value = stringValue } } ; if (paramType == typeof(DateTime)) { return new ParamBinding() { Type = "TIMESTAMP_NTZ", Value = param == null ? null : SnowflakeTypesConverter.ConvertToTimestampNtz((DateTime)param) } } ; if (paramType == typeof(DateTimeOffset)) { return new ParamBinding() { Type = "TIMESTAMP_TZ", Value = param == null ? null : SnowflakeTypesConverter.ConvertToTimestampTz((DateTimeOffset)param) } } ; if (paramType == typeof(byte[])) { return new ParamBinding() { Type = "BINARY", Value = param == null ? null : SnowflakeTypesConverter.BytesToHex((byte[])param) } } ; return(null); }
private static string ConvertColumnValueToJsonToken(string value, string columnType) { if (value == null || value == "null") { return("null"); } if (columnType == "text") { return(JsonSerializer.Serialize(value)); } var sfSemiStructuredTypes = new List <string>() { "object", "variant", "array" }; if (sfSemiStructuredTypes.Contains(columnType)) { return(value); } var sfSimpleTypes = new List <string>() { "fixed", "real" }; if (sfSimpleTypes.Contains(columnType)) { return(value); } if (columnType == "boolean") { return(value == "1" || value == "true" ? "true" : "false"); } var sfDateTimeOffsetTypes = new List <string>() { "timestamp_ltz", "timestamp_tz" }; if (sfDateTimeOffsetTypes.Contains(columnType)) { return('"' + SnowflakeTypesConverter.ConvertToDateTimeOffset(value, columnType).ToString("o") + '"'); } var sfDateTimeTypes = new List <string>() { "date", "time", "timestamp_ntz" }; if (sfDateTimeTypes.Contains(columnType)) { return('"' + SnowflakeTypesConverter.ConvertToDateTime(value, columnType).ToString("o") + '"'); } if (columnType == "binary") { var bytes = SnowflakeTypesConverter.HexToBytes(value); var base64 = Convert.ToBase64String(bytes); return('"' + base64 + '"'); } return('"' + value + '"'); }