@@ -50,54 +50,77 @@ class QueryBuilder <T extends ParseObject> {
5050 }
5151
5252 String _buildQuery () {
53- var existsMap = Map ();
53+ var queries = List < String > ();
5454
5555 // START QUERY
56- String query = "where=" ;
56+ const String QUERY_START = "where={" ;
57+ const String QUERY_END = "}" ;
5758
58- // ADD PARAM TO MAP
59+ var query = QUERY_START ;
5960
61+ // ADD PARAM TO MAP
6062 //Needs fixing
61- if (equals != null ) existsMap = _runThroughQueryParams (equals, field);
62- if (contains != null ) existsMap = _runThroughQueryParamsWithName ( contains, "\$ term" , field);
63+ if (equals != null ) queries. add ( _runThroughQueryParams (equals, field) );
64+ if (contains != null ) queries. add ( _buildQueryWithOperatorAndField ( contains, "\$ term" , field) );
6365
6466 // Works
65- if (lessThan != null ) existsMap = _runThroughQueryParamsWithName ( lessThan, "\$ lt" , field);
66- if (lessThanOrEqualTo != null ) existsMap = _runThroughQueryParamsWithName ( lessThanOrEqualTo, "\$ lte" , field);
67- if (greaterThan != null ) existsMap = _runThroughQueryParamsWithName ( greaterThan, "\$ gt" , field);
68- if (greaterThanOrEqualTo != null ) existsMap = _runThroughQueryParamsWithName ( greaterThanOrEqualTo, "\$ gte" , field);
69- if (notEqualTo != null ) existsMap = _runThroughQueryParamsWithName ( notEqualTo, "\$ ne" , field);
67+ if (lessThan != null ) queries. add ( _buildQueryWithOperatorAndField ( lessThan, "\$ lt" , field) );
68+ if (lessThanOrEqualTo != null ) queries. add ( _buildQueryWithOperatorAndField ( lessThanOrEqualTo, "\$ lte" , field) );
69+ if (greaterThan != null ) queries. add ( _buildQueryWithOperatorAndField ( greaterThan, "\$ gt" , field) );
70+ if (greaterThanOrEqualTo != null ) queries. add ( _buildQueryWithOperatorAndField ( greaterThanOrEqualTo, "\$ gte" , field) );
71+ if (notEqualTo != null ) queries. add ( _buildQueryWithOperatorAndField ( notEqualTo, "\$ ne" , field) );
7072
7173 // Not sure
72- if (containedIn != null ) existsMap = _runThroughQueryParamsWithName ( containedIn, "\$ in" , field);
73- if (notContainedIn != null ) existsMap = _runThroughQueryParamsWithName ( notContainedIn, "\$ nin" , field);
74- if (exists != null ) existsMap = _runThroughQueryParamsWithName ( exists, "\$ exists" , field);
75- if (select != null ) existsMap = _runThroughQueryParamsWithName ( select, "\$ select" , field);
76- if (dontSelect != null ) existsMap = _runThroughQueryParamsWithName (dontSelect, "\$ dontSelect" , field);
77- if (all != null ) existsMap = _runThroughQueryParamsWithName ( all, "\$ all" , field);
74+ if (containedIn != null ) queries. add ( _buildQueryWithOperatorAndField ( containedIn, "\$ in" , field) );
75+ if (notContainedIn != null ) queries. add ( _buildQueryWithOperatorAndField ( notContainedIn, "\$ nin" , field) );
76+ if (exists != null ) queries. add ( _buildQueryWithOperatorAndField ( exists, "\$ exists" , field) );
77+ if (select != null ) queries. add ( _buildQueryWithOperatorAndField ( select, "\$ select" , field) );
78+ if (dontSelect != null ) queries. add ( _buildQueryWithOperatorAndField (dontSelect, "\$ dontSelect" , field) );
79+ if (all != null ) queries. add ( _buildQueryWithOperatorAndField ( all, "\$ all" , field) );
7880
7981 // Works
80- if (regEx != null ) existsMap = _runThroughQueryParamsWithName ( regEx, "\$ regex" , field);
82+ if (regEx != null ) queries. add ( _buildQueryWithOperatorAndField ( regEx, "\$ regex" , field) );
8183
8284 // Doesnt
83- if (text != null ) existsMap = _runThroughQueryParamsWithName ( text, "\$ text" , field);
85+ if (text != null ) queries. add ( _buildQueryWithOperatorAndField ( text, "\$ text" , field) );
8486
8587 // -- BUILD QUERY USING MAP
86- for (var item in existsMap.entries){
87- query += "{\" ${item .key .toString ()}\" :${item .value }}" ;
88+ for (var item in queries){
89+ if (query == QUERY_START ) {
90+ query += item;
91+ } else {
92+ query += ",$item " ;
93+ }
8894 }
8995
9096 // -- ADD LIMITER
9197 if (limit != 0 ) query += '?limit=$limit ' ;
9298 if (skip != 0 ) query += '?skip=$skip ' ;
9399
100+ query += QUERY_END ;
101+
94102 // -- TEST
95103 print ("QUERY: $query " );
96104
97105 return query;
98106 }
99107
100- Map _runThroughQueryParams (List <dynamic > list, String queryParam) {
108+ _buildQueryWithOperatorAndField (List <dynamic > listOfValuesToQuery, String queryOperator, String tableNameToQuery) {
109+
110+ var queryOperatorAndValueMap = Map ();
111+ var queryString = "\" $tableNameToQuery \" :" ;
112+
113+ for (var queryValue in listOfValuesToQuery) {
114+ queryOperatorAndValueMap[queryOperator] = queryValue;
115+ }
116+
117+ var formattedQueryOperatorAndValue = JsonEncoder ().convert (queryOperatorAndValueMap);
118+ queryString += "$formattedQueryOperatorAndValue " ;
119+
120+ return queryString;
121+ }
122+
123+ _runThroughQueryParams (List <dynamic > list, String queryParam) {
101124 Map <String , dynamic > mapToReturn = Map <String , dynamic >();
102125 var params;
103126
@@ -115,26 +138,10 @@ class QueryBuilder <T extends ParseObject> {
115138
116139 mapToReturn[queryParam] = params;
117140
118- return mapToReturn;
119- }
120-
121- Map <String , String > _runThroughQueryParamsWithName (List <dynamic > list, String queryParam, String fieldName) {
122- Map <String , String > mapToReturn = Map <String , String >();
123- Map <String , dynamic > mapWithParamData = Map <String , dynamic >();
124-
125- for (var item in list) {
126- mapWithParamData.putIfAbsent (queryParam, item);
127- }
128-
129- var params = JsonEncoder ().convert (mapWithParamData);
130-
131- mapToReturn[fieldName] = params;
132-
133- return mapToReturn;
141+ return JsonEncoder ().convert (mapToReturn);
134142 }
135143
136- Map <String , String > _runThroughQueryParamsWithSearchTerms (
137- List <dynamic > list, String queryParam, String fieldName) {
144+ Map <String , String > _runThroughQueryParamsWithSearchTerms (List <dynamic > list, String queryParam, String fieldName) {
138145 Map <String , String > mapToReturn = Map <String , String >();
139146 Map <String , dynamic > mapWithParamData = Map <String , dynamic >();
140147 Map <String , String > textEntry = Map <String , String >();
0 commit comments