Skip to content

Commit df9594d

Browse files
committed
use native parseCubestoreResultMessage
1 parent b1e5cbf commit df9594d

File tree

2 files changed

+9
-41
lines changed

2 files changed

+9
-41
lines changed

packages/cubejs-cubestore-driver/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"@cubejs-backend/base-driver": "1.1.7",
3030
"@cubejs-backend/cubestore": "1.1.7",
3131
"@cubejs-backend/shared": "1.1.7",
32+
"@cubejs-backend/native": "1.1.7",
3233
"csv-write-stream": "^2.0.0",
3334
"flatbuffers": "23.3.3",
3435
"fs-extra": "^9.1.0",

packages/cubejs-cubestore-driver/src/WebSocketConnection.ts

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import WebSocket from 'ws';
22
import * as flatbuffers from 'flatbuffers';
3+
import { v4 as uuidv4 } from 'uuid';
34
import { InlineTable } from '@cubejs-backend/base-driver';
45
import { getEnv } from '@cubejs-backend/shared';
5-
import { v4 as uuidv4 } from 'uuid';
6+
import { parseCubestoreResultMessage } from '@cubejs-backend/native';
67
import {
78
HttpCommand,
8-
HttpError,
99
HttpMessage,
1010
HttpQuery,
11-
HttpResultSet,
1211
HttpTable
1312
} from '../codegen';
1413

@@ -116,44 +115,12 @@ export class WebSocketConnection {
116115
if (!resolvers) {
117116
throw new Error(`Cube Store missed message id: ${httpMessage.messageId()}`); // logging
118117
}
119-
const commandType = httpMessage.commandType();
120-
if (commandType === HttpCommand.HttpError) {
121-
resolvers.reject(new Error(`${httpMessage.command(new HttpError())?.error()}`));
122-
} else if (commandType === HttpCommand.HttpResultSet) {
123-
const resultSet = httpMessage.command(new HttpResultSet());
124-
if (!resultSet) {
125-
resolvers.reject(new Error('Empty resultSet'));
126-
return;
127-
}
128-
const columnsLen = resultSet.columnsLength();
129-
const columns: Array<string> = [];
130-
for (let i = 0; i < columnsLen; i++) {
131-
const columnName = resultSet.columns(i);
132-
if (!columnName) {
133-
resolvers.reject(new Error('Column name is not defined'));
134-
return;
135-
}
136-
columns.push(columnName);
137-
}
138-
const rowLen = resultSet.rowsLength();
139-
const result: any[] = [];
140-
for (let i = 0; i < rowLen; i++) {
141-
const row = resultSet.rows(i);
142-
if (!row) {
143-
resolvers.reject(new Error('Null row'));
144-
return;
145-
}
146-
const valueLen = row.valuesLength();
147-
const rowObj = {};
148-
for (let j = 0; j < valueLen; j++) {
149-
const value = row.values(j);
150-
rowObj[columns[j]] = value?.stringValue();
151-
}
152-
result.push(rowObj);
153-
}
154-
resolvers.resolve(result);
155-
} else {
156-
resolvers.reject(new Error('Unsupported command'));
118+
119+
try {
120+
const nativeResMsg = parseCubestoreResultMessage(msg);
121+
resolvers.resolve(nativeResMsg);
122+
} catch (e) {
123+
resolvers.reject(e);
157124
}
158125
});
159126
});

0 commit comments

Comments
 (0)