@@ -117,13 +117,6 @@ function systemAsyncHandler(handler: (req: Request & { context: ExtendedRequestC
117117 } ;
118118}
119119
120- function cleanupResult ( result ) {
121- return {
122- ...result ,
123- rawData : undefined ,
124- } ;
125- }
126-
127120// Prepared CheckAuthFn, default or from config: always async, returns nothing
128121type PreparedCheckAuthFn = ( ctx : any , authorization ?: string ) => Promise < void > ;
129122
@@ -1621,7 +1614,7 @@ class ApiGateway {
16211614 * result object.
16221615 * @internal
16231616 */
1624- private async prepareResultTransformData (
1617+ private prepareResultTransformData (
16251618 context : RequestContext ,
16261619 queryType : QueryType ,
16271620 normalizedQuery : NormalizedQuery ,
@@ -1642,7 +1635,9 @@ class ApiGateway {
16421635 } ,
16431636 response : any ,
16441637 responseType ?: ResultType ,
1645- ) {
1638+ ) : ResultWrapper {
1639+ const resultWrapper = response . data ;
1640+
16461641 const transformDataParams = {
16471642 aliasToMemberNameMap : sqlQuery . aliasNameToMember ,
16481643 annotation : {
@@ -1655,12 +1650,8 @@ class ApiGateway {
16551650 resType : responseType ,
16561651 } ;
16571652
1658- response . data . setTransformData ( transformDataParams ) ;
1659-
1660- // We postpone data transformation until the last minute
1661- return {
1653+ const resObj = {
16621654 query : normalizedQuery ,
1663- rawData : response . data ,
16641655 lastRefreshTime : response . lastRefreshTime ?. toISOString ( ) ,
16651656 ...(
16661657 getEnv ( 'devMode' ) ||
@@ -1681,6 +1672,11 @@ class ApiGateway {
16811672 slowQuery : Boolean ( response . slowQuery ) ,
16821673 total : normalizedQuery . total ? response . total : null ,
16831674 } ;
1675+
1676+ resultWrapper . setTransformData ( transformDataParams ) ;
1677+ resultWrapper . setRootResultObject ( resObj ) ;
1678+
1679+ return resultWrapper ;
16841680 }
16851681
16861682 /**
@@ -1825,15 +1821,13 @@ class ApiGateway {
18251821 queries : results . length ,
18261822 queriesWithPreAggregations :
18271823 results . filter (
1828- ( r : any ) => Object . keys (
1829- r . usedPreAggregations || { }
1830- ) . length
1824+ ( r : any ) => Object . keys ( r . getRootResultObject ( ) . usedPreAggregations || { } ) . length
18311825 ) . length ,
18321826 // Have to omit because data could be processed natively
18331827 // so it is not known at this point
18341828 // queriesWithData:
18351829 // results.filter((r: any) => r.data?.length).length,
1836- dbType : results . map ( r => r . dbType ) ,
1830+ dbType : results . map ( r => r . getRootResultObject ( ) . dbType ) ,
18371831 } ,
18381832 context ,
18391833 ) ;
@@ -1842,9 +1836,9 @@ class ApiGateway {
18421836 // We prepare the final json result on native side
18431837 const [ transformDataJson , rawDataRef , cleanResultList ] = results . reduce < [ Object [ ] , any [ ] , Object [ ] ] > (
18441838 ( [ transformList , rawList , resultList ] , r ) => {
1845- transformList . push ( r . rawData . getTransformData ( ) ) ;
1846- rawList . push ( r . rawData . getRawData ( ) ) ;
1847- resultList . push ( cleanupResult ( r ) ) ;
1839+ transformList . push ( r . getTransformData ( ) ) ;
1840+ rawList . push ( r . getRawData ( ) ) ;
1841+ resultList . push ( r . getRootResultObject ( ) ) ;
18481842 return [ transformList , rawList , resultList ] ;
18491843 } ,
18501844 [ [ ] , [ ] , [ ] ]
@@ -1861,7 +1855,7 @@ class ApiGateway {
18611855 // We prepare the full final json result on native side
18621856 const r = results [ 0 ] ;
18631857 res ( await getFinalQueryResult (
1864- r . rawData . getTransformData ( ) , r . rawData . getRawData ( ) , cleanupResult ( r )
1858+ r . getTransformData ( ) , r . getRawData ( ) , r . getRootResultObject ( )
18651859 ) ) ;
18661860 }
18671861 } catch ( e : any ) {
@@ -1996,13 +1990,11 @@ class ApiGateway {
19961990 res ( results [ 0 ] ) ;
19971991 } else {
19981992 // We prepare the final json result on native side
1999- const [ transformDataJson , rawData , resultDataJson ] = ( results as {
2000- rawData : { getTransformData : ( ) => any , getRawData : ( ) => any } ;
2001- } [ ] ) . reduce < [ Object [ ] , any [ ] , Object [ ] ] > (
1993+ const [ transformDataJson , rawData , resultDataJson ] = ( results as ResultWrapper [ ] ) . reduce < [ Object [ ] , any [ ] , Object [ ] ] > (
20021994 ( [ transformList , rawList , resultList ] , r ) => {
2003- transformList . push ( r . rawData . getTransformData ( ) ) ;
2004- rawList . push ( r . rawData . getRawData ( ) ) ;
2005- resultList . push ( cleanupResult ( r ) ) ;
1995+ transformList . push ( r . getTransformData ( ) ) ;
1996+ rawList . push ( r . getRawData ( ) ) ;
1997+ resultList . push ( r . getRootResultObject ( ) ) ;
20061998 return [ transformList , rawList , resultList ] ;
20071999 } ,
20082000 [ [ ] , [ ] , [ ] ]
0 commit comments