Skip to content

Commit 64f03c1

Browse files
committed
extend DataResult interface
1 parent 9dbcd30 commit 64f03c1

File tree

2 files changed

+43
-16
lines changed

2 files changed

+43
-16
lines changed

packages/cubejs-api-gateway/src/gateway.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,13 +1818,13 @@ class ApiGateway {
18181818
queries: results.length,
18191819
queriesWithPreAggregations:
18201820
results.filter(
1821-
(r: any) => Object.keys(r.getRootResultObject().usedPreAggregations || {}).length
1821+
(r: any) => Object.keys(r.getRootResultObject()[0].usedPreAggregations || {}).length
18221822
).length,
18231823
// Have to omit because data could be processed natively
18241824
// so it is not known at this point
18251825
// queriesWithData:
18261826
// results.filter((r: any) => r.data?.length).length,
1827-
dbType: results.map(r => r.getRootResultObject().dbType),
1827+
dbType: results.map(r => r.getRootResultObject()[0].dbType),
18281828
},
18291829
context,
18301830
);

packages/cubejs-backend-native/js/ResultWrapper.ts

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import {
99
export interface DataResult {
1010
isWrapper: boolean;
1111
getFinalResult(): Promise<any>;
12+
getRawData(): any[];
13+
getTransformData(): any[];
14+
getRootResultObject(): any[];
1215
}
1316

1417
class BaseWrapper {
@@ -117,32 +120,32 @@ export class ResultWrapper extends BaseWrapper implements DataResult {
117120
return (array as any)[method](...args);
118121
}
119122

120-
public getRawData() {
123+
public getRawData(): any[] {
121124
if (this.isNative) {
122-
return this.nativeReference;
125+
return [this.nativeReference];
123126
}
124127

125-
return this.jsResult;
128+
return [this.jsResult];
126129
}
127130

128131
public setTransformData(td: any) {
129132
this.transformData = td;
130133
}
131134

132-
public getTransformData(): any {
133-
return this.transformData;
135+
public getTransformData(): any[] {
136+
return [this.transformData];
134137
}
135138

136139
public setRootResultObject(obj: any) {
137140
this.rootResultObject = obj;
138141
}
139142

140-
public getRootResultObject(): any {
141-
return this.rootResultObject;
143+
public getRootResultObject(): any[] {
144+
return [this.rootResultObject];
142145
}
143146

144147
public async getFinalResult(): Promise<any> {
145-
return getFinalQueryResult(this.transformData, this.getRawData(), this.rootResultObject);
148+
return getFinalQueryResult(this.transformData, this.getRawData()[0], this.rootResultObject);
146149
}
147150
}
148151

@@ -154,9 +157,9 @@ export class ResultMultiWrapper extends BaseWrapper implements DataResult {
154157
public async getFinalResult(): Promise<any> {
155158
const [transformDataJson, rawDataRef, cleanResultList] = this.results.reduce<[Object[], any[], Object[]]>(
156159
([transformList, rawList, resultList], r) => {
157-
transformList.push(r.getTransformData());
158-
rawList.push(r.getRawData());
159-
resultList.push(r.getRootResultObject());
160+
transformList.push(r.getTransformData()[0]);
161+
rawList.push(r.getRawData()[0]);
162+
resultList.push(r.getRootResultObject()[0]);
160163
return [transformList, rawList, resultList];
161164
},
162165
[[], [], []]
@@ -170,6 +173,18 @@ export class ResultMultiWrapper extends BaseWrapper implements DataResult {
170173

171174
return getFinalQueryResultMulti(transformDataJson, rawDataRef, responseDataObj);
172175
}
176+
177+
public getTransformData(): any[] {
178+
return this.results.map(r => r.getTransformData()[0]);
179+
}
180+
181+
public getRawData(): any[] {
182+
return this.results.map(r => r.getRawData()[0]);
183+
}
184+
185+
public getRootResultObject(): any[] {
186+
return this.results.map(r => r.getRootResultObject()[0]);
187+
}
173188
}
174189

175190
// This is consumed by native side via Transport Bridge
@@ -181,9 +196,9 @@ export class ResultArrayWrapper extends BaseWrapper implements DataResult {
181196
public async getFinalResult(): Promise<any> {
182197
const [transformDataJson, rawData, resultDataJson] = this.results.reduce<[Object[], any[], Object[]]>(
183198
([transformList, rawList, resultList], r) => {
184-
transformList.push(r.getTransformData());
185-
rawList.push(r.getRawData());
186-
resultList.push(r.getRootResultObject());
199+
transformList.push(r.getTransformData()[0]);
200+
rawList.push(r.getRawData()[0]);
201+
resultList.push(r.getRootResultObject()[0]);
187202
return [transformList, rawList, resultList];
188203
},
189204
[[], [], []]
@@ -194,4 +209,16 @@ export class ResultArrayWrapper extends BaseWrapper implements DataResult {
194209

195210
return [transformDataJson, rawData, resultDataJson];
196211
}
212+
213+
public getTransformData(): any[] {
214+
return this.results.map(r => r.getTransformData()[0]);
215+
}
216+
217+
public getRawData(): any[] {
218+
return this.results.map(r => r.getRawData()[0]);
219+
}
220+
221+
public getRootResultObject(): any[] {
222+
return this.results.map(r => r.getRootResultObject()[0]);
223+
}
197224
}

0 commit comments

Comments
 (0)