Skip to content

Commit 0686db5

Browse files
author
Connell, Joseph
committed
Update duckdb Plugin to new duckdb/node-api (existing was depricated and breaking tests)
1 parent 6a25813 commit 0686db5

File tree

3 files changed

+1555
-560
lines changed

3 files changed

+1555
-560
lines changed

server/node-service/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,14 @@
3737
"@aws-sdk/client-lambda": "^3.332.0",
3838
"@aws-sdk/client-s3": "^3.332.0",
3939
"@aws-sdk/s3-request-presigner": "^3.332.0",
40+
"@duckdb/node-api": "^1.3.0-alpha.21",
4041
"@google-cloud/bigquery": "^6.1.0",
4142
"@google-cloud/storage": "^6.10.1",
43+
"@opentelemetry/api": "^1.9.0",
44+
"@opentelemetry/auto-instrumentations-node": "^0.59.0",
45+
"@opentelemetry/sdk-metrics": "^2.0.1",
46+
"@opentelemetry/sdk-node": "^0.201.1",
47+
"@opentelemetry/sdk-trace-node": "^2.0.1",
4248
"@supabase/supabase-js": "^2.26.0",
4349
"@types/cors": "^2.8.17",
4450
"@types/express": "^4.17.14",
@@ -52,7 +58,6 @@
5258
"base64-arraybuffer": "^1.0.2",
5359
"bluebird": "^3.7.2",
5460
"cors": "^2.8.5",
55-
"duckdb-async": "^1.1.3",
5661
"dynamodb-data-types": "^4.0.1",
5762
"express": "^4.21.0",
5863
"express-async-errors": "^3.1.1",

server/node-service/src/plugins/duckdb/index.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { DataSourcePlugin } from "lowcoder-sdk/dataSource";
22
import dataSourceConfig, { DataSourceDataType } from "./dataSourceConfig";
33
import queryConfig, { ActionDataType } from "./queryConfig";
4-
import { Database } from "duckdb-async";
4+
import { DuckDBInstance } from "@duckdb/node-api";
55
import { ServiceError } from "../../common/error";
66

77
// Helper function to handle BigInt serialization
@@ -23,17 +23,19 @@ const duckdbPlugin: DataSourcePlugin<ActionDataType, DataSourceDataType> = {
2323
run: async function (actionData, dataSourceConfig): Promise<any> {
2424
const { databaseFile, options } = dataSourceConfig;
2525
const parsedOptions = JSON.parse(options);
26-
const db = await Database.create(databaseFile, parsedOptions);
26+
const instance = await DuckDBInstance.create(databaseFile, parsedOptions);
27+
const db = await instance.connect();
2728

2829
if (actionData.actionName === "Query") {
2930
try {
30-
const result = await db.all(actionData.queryString);
31+
const result = await db.runAndReadAll(actionData.queryString);
32+
const data = await result.getRows();
3133
// Apply BigInt serialization to each row
32-
return result.map(serializeBigInts);
34+
return data.map(serializeBigInts);
3335
} catch (error) {
3436
throw new ServiceError((error as Error).message);
3537
} finally {
36-
await db.close();
38+
await db.closeSync();
3739
}
3840
}
3941
},

0 commit comments

Comments
 (0)