Skip to content

Commit e327718

Browse files
authored
Merge pull request #74 from gregnr/feat/deparse-wasm
Deparse in WASM builds
2 parents 1f2afbf + d22d9ff commit e327718

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/async.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ Napi::Value ParseQueryAsync(const Napi::CallbackInfo& info) {
137137
}
138138

139139
Napi::Value DeparseAsync(const Napi::CallbackInfo& info) {
140-
if (info.Length() < 2 || !info[0].IsBuffer() || !info[1].IsFunction()) {
140+
if (info.Length() < 2 || !(info[0].IsBuffer() || info[0].IsTypedArray()) || !info[1].IsFunction()) {
141141
Napi::TypeError::New(info.Env(), "Invalid arguments").ThrowAsJavaScriptException();
142142
return info.Env().Undefined();
143143
}

test/webpack/src/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
import { parseQuery } from '../../../wasm';
1+
import { deparse, parseQuery } from '../../../wasm';
22

33
const sql = 'select * from customers;';
44
const result = await parseQuery(sql);
5+
const newSql = await deparse(result);
56

67
console.log(sql);
78
console.log(result);
9+
console.log(newSql);

wasm/index.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { getDefaultContext } from '@emnapi/runtime';
2+
import { pg_query } from '../proto.js';
23
import PgQueryModule from './libpg-query.js';
34

45
let PgQuery;
@@ -30,6 +31,16 @@ export const parseQuery = awaitInit((query) => {
3031
});
3132
});
3233

34+
export const deparse = awaitInit((parseTree) => {
35+
const msg = pg_query.ParseResult.fromObject(parseTree);
36+
const data = pg_query.ParseResult.encode(msg).finish();
37+
return new Promise((resolve, reject) => {
38+
PgQuery.deparseAsync(data, (err, result) => {
39+
err ? reject(err) : resolve(result);
40+
});
41+
});
42+
});
43+
3344
export const parsePlPgSQL = awaitInit((query) => {
3445
return new Promise(async (resolve, reject) => {
3546
PgQuery.parsePlPgSQLAsync(query, (err, result) => {

0 commit comments

Comments
 (0)