private object ResolveLogical(LogicalTypeSchema writerSchema, LogicalTypeSchema readerSchema, IReader reader, Type type) { var value = Resolve(writerSchema.BaseTypeSchema, readerSchema.BaseTypeSchema, reader, type); var result = writerSchema.ConvertToLogicalValue(value, writerSchema, type); return(result); }
public object ConvertToBaseValue(object logicalValue, LogicalTypeSchema schema) { var time = (TimeSpan)logicalValue; if (time > _maxTime) { throw new ArgumentOutOfRangeException(nameof(logicalValue), "A 'time-micros' value can only have the range '00:00:00' to '23:59:59'."); } return((long)(time - DateTimeExtensions.UnixEpochDateTime.TimeOfDay).TotalMilliseconds * 1000); }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { var buffer = AvroType.Bytes == schema.BaseTypeSchema.Type ? (byte[])baseValue : ((AvroFixed)baseValue).Value; Array.Reverse(buffer); var avroDecimal = new AvroDecimal(new BigInteger(buffer), Scale); return(AvroDecimal.ToDecimal(avroDecimal)); }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { var noMicroseconds = (long)baseValue; var result = DateTimeExtensions.UnixEpochDateTime.AddMilliseconds(noMicroseconds / 1000); if (type == typeof(DateTimeOffset) || type == typeof(DateTimeOffset?)) { return(DateTimeOffset.FromUnixTimeMilliseconds(noMicroseconds / 1000)); } else { return(result); } }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { byte[] baseBytes = (byte[])baseValue; if (!BitConverter.IsLittleEndian) { Array.Reverse(baseBytes); //reverse it so we get big endian. } int months = BitConverter.ToInt32(baseBytes.Skip(0).Take(4).ToArray(), 0); int days = BitConverter.ToInt32(baseBytes.Skip(4).Take(4).ToArray(), 0); int milliseconds = BitConverter.ToInt32(baseBytes.Skip(8).Take(4).ToArray(), 0); var result = new TimeSpan(months * 30 + days, 0, 0, 0, milliseconds); return(result); }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { var noMs = (long)baseValue / 1000; return(DateTimeExtensions.UnixEpochDateTime.TimeOfDay.Add(TimeSpan.FromMilliseconds(noMs))); }
private object ResolveLogical(LogicalTypeSchema readerSchema, IReader reader) { var baseValue = Resolve(readerSchema.BaseTypeSchema, reader); return(readerSchema.ConvertToLogicalValue(baseValue, readerSchema, readerSchema.RuntimeType)); }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { var noDays = (int)baseValue; return(DateTimeExtensions.UnixEpochDateTime.AddDays(noDays)); }
public object ConvertToBaseValue(object logicalValue, LogicalTypeSchema schema) { var date = ((DateTime)logicalValue).Date; return((date - DateTimeExtensions.UnixEpochDateTime).Days); }
internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type) { return(Guid.Parse((string)baseValue)); }