@@ -4,6 +4,7 @@ import { queryTypes, queryTypeKeys } from './query-types';
44import { getReadableFields , getReadableRelations } from '../bodyguard' ;
55import { validateSync } from 'class-validator' ;
66import { getValidationConstraints } from './get-validation-constraints' ;
7+ import { Query } from './query' ;
78
89/**
910 * Validate a GET query type
@@ -27,13 +28,15 @@ function queryFieldValidator(
2728 request . user
2829 ) ;
2930
30- if ( type in request . query ) {
31- if ( request . query [ type ] instanceof Array ) {
32- for ( let i = 0 ; i < request . query [ type ] . length ; i ++ ) {
33- const key = request . query [ type ] [ i ] ;
31+ const requestQueryParams : Query = request . query ;
32+
33+ if ( type in requestQueryParams ) {
34+ if ( requestQueryParams [ type ] instanceof Array ) {
35+ for ( let i = 0 ; i < requestQueryParams [ type ] . length ; i ++ ) {
36+ const key = requestQueryParams [ type ] [ i ] ;
3437
3538 if ( key === undefined ) {
36- request . query [ type ] . splice ( i , 1 ) ;
39+ requestQueryParams [ type ] . splice ( i , 1 ) ;
3740
3841 continue ;
3942 }
@@ -60,14 +63,14 @@ function queryFieldValidator(
6063 }
6164 }
6265 }
63- else if ( request . query [ type ] instanceof Object ) {
66+ else if ( requestQueryParams [ type ] instanceof Object ) {
6467 const validators = getValidationConstraints ( request . payloadType ) ;
6568
66- for ( const key in request . query [ type ] ) {
67- const value = request . query [ type ] [ key ] ;
69+ for ( const key in requestQueryParams [ type ] ) {
70+ const value = requestQueryParams [ type ] [ key ] ;
6871
6972 if ( value === undefined ) {
70- delete request . query [ type ] [ key ] ;
73+ delete requestQueryParams [ type ] [ key ] ;
7174
7275 continue ;
7376 }
@@ -112,7 +115,7 @@ function queryFieldValidator(
112115 const asInt = parseInt ( value , 10 ) ;
113116
114117 if ( ! isNaN ( asInt ) ) {
115- request . query [ type ] [ key ] = asInt ;
118+ requestQueryParams [ type ] [ key ] = asInt ;
116119 }
117120 }
118121 }
@@ -129,7 +132,7 @@ function queryFieldValidator(
129132 ) {
130133 const testObject = Object . assign (
131134 new request . payloadType ( ) ,
132- request . query [ type ]
135+ requestQueryParams [ type ]
133136 ) ;
134137
135138 const validationErrors = validateSync ( testObject , {
@@ -149,15 +152,15 @@ function queryFieldValidator(
149152 ) ;
150153
151154 if ( validator && 'isInt' in validator && validator . isInt === true ) {
152- const asInt = parseInt ( request . query . id , 10 ) ;
155+ const asInt = parseInt ( ` ${ requestQueryParams . id } ` , 10 ) ;
153156
154157 if ( ! isNaN ( asInt ) ) {
155- request . query . id = asInt ;
158+ requestQueryParams . id = asInt ;
156159 }
157160 }
158161
159162 const testObject = Object . assign ( new request . payloadType ( ) , {
160- id : request . query [ type ]
163+ id : requestQueryParams [ type ]
161164 } ) ;
162165
163166 const validationErrors = validateSync ( testObject , {
@@ -182,10 +185,12 @@ function queryFieldValidator(
182185 * @return Returns if the get query is valid
183186 */
184187export function queryValidator ( request : Request , response : Response ) : boolean {
185- for ( const type in request . query ) {
188+ const requestQueryParams : Query = request . query ;
189+
190+ for ( const type in requestQueryParams ) {
186191 // Is this defined?
187- if ( request . query [ type ] === undefined ) {
188- delete request . query [ type ] ;
192+ if ( requestQueryParams [ type ] === undefined ) {
193+ delete requestQueryParams [ type ] ;
189194
190195 continue ;
191196 }
@@ -202,11 +207,11 @@ export function queryValidator(request: Request, response: Response): boolean {
202207 }
203208
204209 // Is query type proper (array, object, etc)?
205- let queryTypeConstructor : string = typeof request . query [ type ] ;
210+ let queryTypeConstructor : string = typeof requestQueryParams [ type ] ;
206211
207212 if (
208213 queryTypeConstructor === 'object' &&
209- 'length' in request . query [ type ]
214+ 'length' in requestQueryParams [ type ]
210215 ) {
211216 queryTypeConstructor = 'array' ;
212217 }
@@ -221,7 +226,7 @@ export function queryValidator(request: Request, response: Response): boolean {
221226 ']. It is: ' +
222227 queryTypeConstructor +
223228 '. Value: ' +
224- request . query [ type ]
229+ requestQueryParams [ type ]
225230 ) ;
226231 }
227232
0 commit comments