|
1 | 1 | #include "include/node_util.h" |
2 | 2 |
|
3 | 3 | #include "common/exception/exception.h" |
4 | | -#include "common/types/blob.h" |
5 | 4 | #include "common/types/value/nested.h" |
6 | 5 | #include "common/types/value/node.h" |
7 | | -#include "common/types/value/rdf_variant.h" |
8 | 6 | #include "common/types/value/recursive_rel.h" |
9 | 7 | #include "common/types/value/rel.h" |
10 | 8 | #include "common/types/value/value.h" |
11 | 9 |
|
12 | | -Napi::Value ConvertRdfVariantToNapiObject(const Value& value, Napi::Env env) { |
13 | | - auto type = RdfVariant::getLogicalTypeID(&value); |
14 | | - switch (type) { |
15 | | - case LogicalTypeID::STRING: { |
16 | | - auto str = RdfVariant::getValue<std::string>(&value); |
17 | | - return Napi::String::New(env, str.data(), str.size()); |
18 | | - } |
19 | | - case LogicalTypeID::BLOB: { |
20 | | - auto blobStr = RdfVariant::getValue<blob_t>(&value).value.getAsString(); |
21 | | - return Napi::Buffer<char>::Copy(env, blobStr.c_str(), blobStr.size()); |
22 | | - } |
23 | | - case LogicalTypeID::INT64: { |
24 | | - return Napi::Number::New(env, RdfVariant::getValue<int64_t>(&value)); |
25 | | - } |
26 | | - case LogicalTypeID::INT32: { |
27 | | - return Napi::Number::New(env, RdfVariant::getValue<int32_t>(&value)); |
28 | | - } |
29 | | - case LogicalTypeID::INT16: { |
30 | | - return Napi::Number::New(env, RdfVariant::getValue<int16_t>(&value)); |
31 | | - } |
32 | | - case LogicalTypeID::INT8: { |
33 | | - return Napi::Number::New(env, RdfVariant::getValue<int8_t>(&value)); |
34 | | - } |
35 | | - case LogicalTypeID::UINT64: { |
36 | | - return Napi::Number::New(env, RdfVariant::getValue<uint64_t>(&value)); |
37 | | - } |
38 | | - case LogicalTypeID::UINT32: { |
39 | | - return Napi::Number::New(env, RdfVariant::getValue<uint32_t>(&value)); |
40 | | - } |
41 | | - case LogicalTypeID::UINT16: { |
42 | | - return Napi::Number::New(env, RdfVariant::getValue<uint16_t>(&value)); |
43 | | - } |
44 | | - case LogicalTypeID::UINT8: { |
45 | | - return Napi::Number::New(env, RdfVariant::getValue<uint8_t>(&value)); |
46 | | - } |
47 | | - case LogicalTypeID::DOUBLE: { |
48 | | - return Napi::Number::New(env, RdfVariant::getValue<double>(&value)); |
49 | | - } |
50 | | - case LogicalTypeID::FLOAT: { |
51 | | - return Napi::Number::New(env, RdfVariant::getValue<float>(&value)); |
52 | | - } |
53 | | - case LogicalTypeID::BOOL: { |
54 | | - return Napi::Boolean::New(env, RdfVariant::getValue<bool>(&value)); |
55 | | - } |
56 | | - case LogicalTypeID::DATE: { |
57 | | - auto dateVal = RdfVariant::getValue<date_t>(&value); |
58 | | - // Javascript Date type contains both date and time information. This returns the Date at |
59 | | - // 00:00:00 in UTC timezone. |
60 | | - auto milliseconds = Date::getEpochNanoSeconds(dateVal) / Interval::NANOS_PER_MICRO / |
61 | | - Interval::MICROS_PER_MSEC; |
62 | | - return Napi::Date::New(env, milliseconds); |
63 | | - } |
64 | | - case LogicalTypeID::TIMESTAMP: { |
65 | | - auto timestampVal = RdfVariant::getValue<timestamp_t>(&value); |
66 | | - auto milliseconds = timestampVal.value / Interval::MICROS_PER_MSEC; |
67 | | - return Napi::Date::New(env, milliseconds); |
68 | | - } |
69 | | - case LogicalTypeID::INTERVAL: { |
70 | | - auto intervalVal = RdfVariant::getValue<interval_t>(&value); |
71 | | - // TODO: By default, Node.js returns the difference in milliseconds between two dates, so we |
72 | | - // follow the convention here, but it might not be the best choice in terms of usability. |
73 | | - auto microseconds = intervalVal.micros; |
74 | | - microseconds += intervalVal.days * Interval::MICROS_PER_DAY; |
75 | | - microseconds += intervalVal.months * Interval::MICROS_PER_MONTH; |
76 | | - auto milliseconds = microseconds / Interval::MICROS_PER_MSEC; |
77 | | - return Napi::Number::New(env, milliseconds); |
78 | | - } |
79 | | - default: { |
80 | | - KU_UNREACHABLE; |
81 | | - } |
82 | | - } |
83 | | -} |
84 | | - |
85 | 10 | Napi::Value Util::ConvertToNapiObject(const Value& value, Napi::Env env) { |
86 | 11 | if (value.isNull()) { |
87 | 12 | return env.Null(); |
@@ -270,9 +195,6 @@ Napi::Value Util::ConvertToNapiObject(const Value& value, Napi::Env env) { |
270 | 195 | } |
271 | 196 | return napiObj; |
272 | 197 | } |
273 | | - case LogicalTypeID::RDF_VARIANT: { |
274 | | - return ConvertRdfVariantToNapiObject(value, env); |
275 | | - } |
276 | 198 | case LogicalTypeID::DECIMAL: { |
277 | 199 | auto valString = value.toString(); |
278 | 200 | return Napi::String::New(env, valString).ToNumber(); |
|
0 commit comments