@@ -297,7 +297,7 @@ async function getEdge(parent, args, info){
297
297
// add filters
298
298
let query_filters = [ ] ;
299
299
if ( args . filter != undefined && ! isEmptyObject ( args . filter ) ) {
300
- let filters = getFilters ( args . filter , info ) ;
300
+ let filters = getFilters ( args . filter , return_type ) ;
301
301
for ( let i in filters ) {
302
302
i == 0 ? query_filters . push ( aql `FILTER` ) : query_filters . push ( aql `AND` ) ;
303
303
query_filters = query_filters . concat ( filters [ i ] ) ;
@@ -771,48 +771,49 @@ function formatFixVariable(_type, v) {
771
771
if ( Array . isArray ( v ) ) {
772
772
let newV = [ ]
773
773
for ( date of v )
774
- newV . push ( aql `DATE_TIMESTAMP(" ${ date } " )` ) ;
774
+ newV . push ( aql `DATE_TIMESTAMP(${ date } )` ) ;
775
775
return newV ;
776
776
}
777
777
else
778
- return aql `DATE_TIMESTAMP(" ${ v } " )` ;
778
+ return aql `DATE_TIMESTAMP(${ v } )` ;
779
779
else
780
780
return v ;
781
781
}
782
782
783
783
/**
784
784
* A small wrapper used by getFilters to call formatFixVariable.
785
- * @param field, info, value
785
+ * @param field
786
+ * @param type_to_filter
787
+ * @param value
786
788
* @returns value (in database ready format)
787
789
*/
788
- function formatFixVariableWrapper ( field , info , v ) {
790
+ function formatFixVariableWrapper ( field , type_to_filter , v ) {
789
791
// no need to even try when we have _id as field
790
792
if ( field == '_id' )
791
793
return v ;
792
794
793
- let namedReturnType = graphql . getNamedType ( info . returnType . getFields ( ) [ 'content' ] . type )
794
- let _type = graphql . getNamedType ( namedReturnType . getFields ( ) [ field ] . type ) ;
795
+ let _type = graphql . getNamedType ( type_to_filter . getFields ( ) [ field ] . type ) ;
795
796
796
797
return formatFixVariable ( _type , v ) ;
797
798
}
798
799
799
- function getFilters ( filter_arg , info ) {
800
+ function getFilters ( filter_arg , type_to_filter ) {
800
801
let filters = [ ] ;
801
- for ( let i in filter_arg ) {
802
+ for ( let i in filter_arg ) {
802
803
let filter = filter_arg [ i ] ;
803
804
/// Rewrite id field
804
- if ( i == 'id' ) { i = '_id' ; }
805
+ if ( i == 'id' ) { i = '_id' ; }
805
806
806
807
// AND expression
807
- if ( i == '_and' ) {
808
+ if ( i == '_and' ) {
808
809
let f = [ ] ;
809
810
f . push ( aql `(` ) ;
810
- for ( let x in filter ) {
811
- if ( x != 0 ) {
811
+ for ( let x in filter ) {
812
+ if ( x != 0 ) {
812
813
f . push ( aql `AND` ) ;
813
814
}
814
- let arr = getFilters ( filter [ x ] , info ) ;
815
- for ( let j in arr ) {
815
+ let arr = getFilters ( filter [ x ] , type_to_filter ) ;
816
+ for ( let j in arr ) {
816
817
f = f . concat ( arr [ j ] ) ;
817
818
}
818
819
}
@@ -821,15 +822,15 @@ function getFilters(filter_arg, info){
821
822
}
822
823
823
824
// OR expression
824
- if ( i == '_or' ) {
825
+ if ( i == '_or' ) {
825
826
let f = [ ] ;
826
827
f . push ( aql `(` ) ;
827
- for ( let x in filter ) {
828
- if ( x != 0 ) {
828
+ for ( let x in filter ) {
829
+ if ( x != 0 ) {
829
830
f . push ( aql `OR` ) ;
830
831
}
831
- let arr = getFilters ( filter [ x ] , info ) ;
832
- for ( let j in arr ) {
832
+ let arr = getFilters ( filter [ x ] , type_to_filter ) ;
833
+ for ( let j in arr ) {
833
834
f = f . concat ( arr [ j ] ) ;
834
835
}
835
836
}
@@ -838,70 +839,70 @@ function getFilters(filter_arg, info){
838
839
}
839
840
840
841
// NOT expression
841
- if ( i == '_not' ) {
842
+ if ( i == '_not' ) {
842
843
let f = [ ] ;
843
844
f . push ( aql `NOT (` ) ;
844
- let arr = getFilters ( filter , info ) ;
845
- for ( let j in arr ) {
845
+ let arr = getFilters ( filter , type_to_filter ) ;
846
+ for ( let j in arr ) {
846
847
f = f . concat ( arr [ j ] ) ;
847
848
}
848
849
f . push ( aql `)` ) ;
849
850
filters . push ( f ) ;
850
851
}
851
852
852
- if ( filter . _eq != null ) {
853
- let preparedArg = formatFixVariableWrapper ( i , info , filter . _eq ) ;
853
+ if ( filter . _eq != null ) {
854
+ let preparedArg = formatFixVariableWrapper ( i , type_to_filter , filter . _eq ) ;
854
855
filters . push ( [ aql `x.${ i } == ${ preparedArg } ` ] ) ;
855
856
}
856
- if ( filter . _neq != null ) {
857
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _neq ) ;
857
+ if ( filter . _neq != null ) {
858
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _neq ) ;
858
859
filters . push ( [ aql `x.${ i } != ${ preparedArgs } ` ] ) ;
859
860
}
860
- if ( filter . _gt != null ) {
861
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _gt ) ;
861
+ if ( filter . _gt != null ) {
862
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _gt ) ;
862
863
filters . push ( [ aql `x.${ i } > ${ preparedArgs } ` ] ) ;
863
864
}
864
- if ( filter . _egt != null ) {
865
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _egt ) ;
865
+ if ( filter . _egt != null ) {
866
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _egt ) ;
866
867
filters . push ( [ aql `x.${ i } >= ${ preparedArgs } ` ] ) ;
867
868
}
868
- if ( filter . _lt != null ) {
869
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _lt ) ;
869
+ if ( filter . _lt != null ) {
870
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _lt ) ;
870
871
filters . push ( [ aql `x.${ i } < ${ preparedArgs } ` ] ) ;
871
872
}
872
- if ( filter . _elt != null ) {
873
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _elt ) ;
873
+ if ( filter . _elt != null ) {
874
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _elt ) ;
874
875
filters . push ( [ aql `x.${ i } <= ${ preparedArgs } ` ] ) ;
875
876
}
876
- if ( filter . _in != null ) {
877
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _in )
877
+ if ( filter . _in != null ) {
878
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _in )
878
879
let q = [ ] ;
879
880
q = q . concat ( [ aql `x.${ i } IN ` ] ) ;
880
881
q = q . concat ( asAqlArray ( preparedArgs ) ) ;
881
882
filters . push ( q ) ;
882
883
}
883
- if ( filter . _nin != null ) {
884
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _nin ) ;
884
+ if ( filter . _nin != null ) {
885
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _nin ) ;
885
886
let q = [ ] ;
886
887
q = q . concat ( [ aql `x.${ i } NOT IN ` ] ) ;
887
888
q = q . concat ( asAqlArray ( preparedArgs ) ) ;
888
889
filters . push ( q ) ;
889
890
}
890
891
891
- if ( filter . _like != null ) {
892
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _like ) ;
892
+ if ( filter . _like != null ) {
893
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _like ) ;
893
894
filters . push ( [ aql `LIKE(x.${ i } , ${ preparedArgs } , false)` ] ) ;
894
895
}
895
- if ( filter . _ilike != null ) {
896
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _ilike ) ;
896
+ if ( filter . _ilike != null ) {
897
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _ilike ) ;
897
898
filters . push ( [ aql `LIKE(x.${ i } , ${ preparedArgs } , true)` ] ) ;
898
899
}
899
- if ( filter . _nlike != null ) {
900
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _nlike ) ;
900
+ if ( filter . _nlike != null ) {
901
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _nlike ) ;
901
902
filters . push ( [ aql `NOT LIKE(x.${ i } , ${ preparedArgs } , false)` ] ) ;
902
903
}
903
- if ( filter . _nilike != null ) {
904
- let preparedArgs = formatFixVariableWrapper ( i , info , filter . _nilike ) ;
904
+ if ( filter . _nilike != null ) {
905
+ let preparedArgs = formatFixVariableWrapper ( i , type_to_filter , filter . _nilike ) ;
905
906
filters . push ( [ aql `NOT LIKE(x.${ i } , ${ preparedArgs } , true)` ] ) ;
906
907
}
907
908
@@ -942,7 +943,7 @@ async function getList(args, info){
942
943
// add filters
943
944
let query_filters = [ ] ;
944
945
if ( args . filter != undefined && ! isEmptyObject ( args . filter ) ) {
945
- let filters = getFilters ( args . filter , info ) ;
946
+ let filters = getFilters ( args . filter , type ) ;
946
947
if ( filters . length > 0 ) {
947
948
query_filters . push ( aql `FILTER` ) ;
948
949
for ( let i in filters ) {
0 commit comments