@@ -50,54 +50,77 @@ class QueryBuilder <T extends ParseObject> {
50
50
}
51
51
52
52
String _buildQuery () {
53
- var existsMap = Map ();
53
+ var queries = List < String > ();
54
54
55
55
// START QUERY
56
- String query = "where=" ;
56
+ const String QUERY_START = "where={" ;
57
+ const String QUERY_END = "}" ;
57
58
58
- // ADD PARAM TO MAP
59
+ var query = QUERY_START ;
59
60
61
+ // ADD PARAM TO MAP
60
62
//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) );
63
65
64
66
// 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) );
70
72
71
73
// 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) );
78
80
79
81
// Works
80
- if (regEx != null ) existsMap = _runThroughQueryParamsWithName ( regEx, "\$ regex" , field);
82
+ if (regEx != null ) queries. add ( _buildQueryWithOperatorAndField ( regEx, "\$ regex" , field) );
81
83
82
84
// Doesnt
83
- if (text != null ) existsMap = _runThroughQueryParamsWithName ( text, "\$ text" , field);
85
+ if (text != null ) queries. add ( _buildQueryWithOperatorAndField ( text, "\$ text" , field) );
84
86
85
87
// -- 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
+ }
88
94
}
89
95
90
96
// -- ADD LIMITER
91
97
if (limit != 0 ) query += '?limit=$limit ' ;
92
98
if (skip != 0 ) query += '?skip=$skip ' ;
93
99
100
+ query += QUERY_END ;
101
+
94
102
// -- TEST
95
103
print ("QUERY: $query " );
96
104
97
105
return query;
98
106
}
99
107
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) {
101
124
Map <String , dynamic > mapToReturn = Map <String , dynamic >();
102
125
var params;
103
126
@@ -115,26 +138,10 @@ class QueryBuilder <T extends ParseObject> {
115
138
116
139
mapToReturn[queryParam] = params;
117
140
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);
134
142
}
135
143
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) {
138
145
Map <String , String > mapToReturn = Map <String , String >();
139
146
Map <String , dynamic > mapWithParamData = Map <String , dynamic >();
140
147
Map <String , String > textEntry = Map <String , String >();
0 commit comments