|
21 | 21 | */ |
22 | 22 | package com.influxdb.v3.client.internal; |
23 | 23 |
|
| 24 | +import com.influxdb.v3.client.write.WritePrecision; |
| 25 | +import org.apache.arrow.vector.types.pojo.ArrowType; |
| 26 | +import org.apache.arrow.vector.types.pojo.Field; |
| 27 | + |
| 28 | +import javax.annotation.Nonnull; |
| 29 | +import javax.annotation.Nullable; |
24 | 30 | import java.math.BigDecimal; |
25 | 31 | import java.math.BigInteger; |
26 | 32 | import java.time.Instant; |
|
30 | 36 | import java.util.Map; |
31 | 37 | import java.util.concurrent.TimeUnit; |
32 | 38 | import java.util.function.Function; |
33 | | -import javax.annotation.Nonnull; |
34 | | -import javax.annotation.Nullable; |
35 | | - |
36 | | -import com.influxdb.v3.client.write.WritePrecision; |
37 | | -import org.apache.arrow.vector.types.pojo.ArrowType; |
38 | | -import org.apache.arrow.vector.types.pojo.Field; |
39 | 39 |
|
40 | 40 | import static java.util.function.Function.identity; |
41 | 41 |
|
@@ -141,16 +141,25 @@ public static BigInteger getTimestamp(@Nonnull final Object value, @Nonnull fina |
141 | 141 | break; |
142 | 142 | } |
143 | 143 | long nanoseconds = TimeUnit.NANOSECONDS.convert((Long) value, timeUnit); |
144 | | - BigInteger convertedTime = NanosecondConverter.convert(Instant.ofEpochSecond(0, nanoseconds), WritePrecision.NS); |
145 | | - result = NanosecondConverter.convertToNanos(convertedTime, WritePrecision.NS); |
| 144 | + Instant instant = Instant.ofEpochSecond(0, nanoseconds); |
| 145 | + result = convertInstantToNano(instant, WritePrecision.NS); |
146 | 146 | } else { |
147 | | - BigInteger convertedTime = NanosecondConverter.convert(Instant.ofEpochMilli((Long) value), WritePrecision.NS); |
148 | | - result = NanosecondConverter.convertToNanos(convertedTime, WritePrecision.NS); |
| 147 | + Instant instant = Instant.ofEpochMilli((Long) value); |
| 148 | + result = convertInstantToNano(instant, WritePrecision.NS); |
149 | 149 | } |
150 | 150 | } else if (value instanceof LocalDateTime) { |
151 | | - BigInteger convertedTime = NanosecondConverter.convert(((LocalDateTime) value).toInstant(ZoneOffset.UTC), WritePrecision.NS); |
152 | | - result = NanosecondConverter.convertToNanos(convertedTime, WritePrecision.NS); |
| 151 | + Instant instant = ((LocalDateTime) value).toInstant(ZoneOffset.UTC); |
| 152 | + result = convertInstantToNano(instant, WritePrecision.NS); |
153 | 153 | } |
154 | 154 | return result; |
155 | 155 | } |
| 156 | + |
| 157 | + private static BigInteger convertInstantToNano(final Instant instant, final WritePrecision precision) { |
| 158 | + var writePrecision = WritePrecision.NS; |
| 159 | + if (precision != null) { |
| 160 | + writePrecision = precision; |
| 161 | + } |
| 162 | + BigInteger convertedTime = NanosecondConverter.convert(instant, writePrecision); |
| 163 | + return NanosecondConverter.convertToNanos(convertedTime, writePrecision); |
| 164 | + } |
156 | 165 | } |
0 commit comments