@@ -1213,8 +1213,11 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
1213
1213
InstanceMethod (" get_map_value" , &DuckDBNodeAddon::get_map_value),
1214
1214
InstanceMethod (" is_null_value" , &DuckDBNodeAddon::is_null_value),
1215
1215
InstanceMethod (" create_null_value" , &DuckDBNodeAddon::create_null_value),
1216
+ InstanceMethod (" get_list_size" , &DuckDBNodeAddon::get_list_size),
1217
+ InstanceMethod (" get_list_child" , &DuckDBNodeAddon::get_list_child),
1216
1218
InstanceMethod (" create_enum_value" , &DuckDBNodeAddon::create_enum_value),
1217
1219
InstanceMethod (" get_enum_value" , &DuckDBNodeAddon::get_enum_value),
1220
+ InstanceMethod (" get_struct_child" , &DuckDBNodeAddon::get_struct_child),
1218
1221
1219
1222
InstanceMethod (" create_logical_type" , &DuckDBNodeAddon::create_logical_type),
1220
1223
InstanceMethod (" logical_type_get_alias" , &DuckDBNodeAddon::logical_type_get_alias),
@@ -2978,6 +2981,9 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
2978
2981
auto value = GetValueFromExternal (env, info[0 ]);
2979
2982
auto index = info[1 ].As <Napi::Number>().Uint32Value ();
2980
2983
auto output_key = duckdb_get_map_key (value, index);
2984
+ if (!output_key) {
2985
+ throw Napi::Error::New (env, " Failed to get map key" );
2986
+ }
2981
2987
return CreateExternalForValue (env, output_key);
2982
2988
}
2983
2989
@@ -2988,6 +2994,9 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
2988
2994
auto value = GetValueFromExternal (env, info[0 ]);
2989
2995
auto index = info[1 ].As <Napi::Number>().Uint32Value ();
2990
2996
auto output_value = duckdb_get_map_value (value, index);
2997
+ if (!output_value) {
2998
+ throw Napi::Error::New (env, " Failed to get map value" );
2999
+ }
2991
3000
return CreateExternalForValue (env, output_value);
2992
3001
}
2993
3002
@@ -3009,7 +3018,26 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
3009
3018
}
3010
3019
3011
3020
// DUCKDB_API idx_t duckdb_get_list_size(duckdb_value value);
3021
+ // function get_list_size(value: Value): number
3022
+ Napi::Value get_list_size (const Napi::CallbackInfo& info) {
3023
+ auto env = info.Env ();
3024
+ auto value = GetValueFromExternal (env, info[0 ]);
3025
+ auto size = duckdb_get_list_size (value);
3026
+ return Napi::Number::New (env, size);
3027
+ }
3028
+
3012
3029
// DUCKDB_API duckdb_value duckdb_get_list_child(duckdb_value value, idx_t index);
3030
+ // function get_list_child(value: Value, index: number): Value
3031
+ Napi::Value get_list_child (const Napi::CallbackInfo& info) {
3032
+ auto env = info.Env ();
3033
+ auto value = GetValueFromExternal (env, info[0 ]);
3034
+ auto index = info[1 ].As <Napi::Number>().Uint32Value ();
3035
+ auto output_value = duckdb_get_list_child (value, index);
3036
+ if (!output_value) {
3037
+ throw Napi::Error::New (env, " Failed to get list child" );
3038
+ }
3039
+ return CreateExternalForValue (env, output_value);
3040
+ }
3013
3041
3014
3042
// DUCKDB_API duckdb_value duckdb_create_enum_value(duckdb_logical_type type, uint64_t value);
3015
3043
// function create_enum_value(logical_type: LogicalType, value: number): Value
@@ -3034,6 +3062,17 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
3034
3062
}
3035
3063
3036
3064
// DUCKDB_API duckdb_value duckdb_get_struct_child(duckdb_value value, idx_t index);
3065
+ // function get_struct_child(value: Value, index: number): Value
3066
+ Napi::Value get_struct_child (const Napi::CallbackInfo& info) {
3067
+ auto env = info.Env ();
3068
+ auto value = GetValueFromExternal (env, info[0 ]);
3069
+ auto index = info[1 ].As <Napi::Number>().Uint32Value ();
3070
+ auto output_value = duckdb_get_struct_child (value, index);
3071
+ if (!output_value) {
3072
+ throw Napi::Error::New (env, " Failed to get struct child" );
3073
+ }
3074
+ return CreateExternalForValue (env, output_value);
3075
+ }
3037
3076
3038
3077
// DUCKDB_API duckdb_logical_type duckdb_create_logical_type(duckdb_type type);
3039
3078
// function create_logical_type(type: Type): LogicalType
@@ -4144,10 +4183,9 @@ NODE_API_ADDON(DuckDBNodeAddon)
4144
4183
---
4145
4184
411 total functions
4146
4185
4147
- 234 instance methods
4186
+ 237 instance methods
4148
4187
3 unimplemented instance cache functions
4149
4188
1 unimplemented logical type function
4150
- 3 unimplemented value inspection functions
4151
4189
13 unimplemented scalar function functions
4152
4190
4 unimplemented scalar function set functions
4153
4191
12 unimplemented aggregate function functions
0 commit comments