@@ -5,16 +5,15 @@ import 'package:parse_server_sdk/network/parse_http_client.dart';
55import 'package:parse_server_sdk/objects/parse_object.dart' ;
66import 'package:parse_server_sdk/objects/parse_response.dart' ;
77
8- class QueryBuilder {
8+ class QueryBuilder < T extends ParseObject > {
99
10- ParseObject object;
10+ T object;
1111 final ParseHTTPClient client = ParseHTTPClient ();
1212 String path;
1313 String field;
1414 Map results;
1515 Map constraint;
16- Map <String , Map <String , String >> whereMap =
17- Map <String , Map <String , String >>();
16+ Map <String , Map <String , String >> whereMap = Map ();
1817
1918 // QueryParams
2019 List <dynamic > equals;
@@ -25,7 +24,7 @@ class QueryBuilder {
2524 List <dynamic > notEqualTo;
2625 List <dynamic > contains;
2726 List <dynamic > containedIn;
28- List <dynamic > notContainerIn ;
27+ List <dynamic > notContainedIn ;
2928 List <dynamic > exists;
3029 List <dynamic > select;
3130 List <dynamic > dontSelect;
@@ -38,51 +37,69 @@ class QueryBuilder {
3837 String get objectId => null ;
3938 Map <String , dynamic > objectData = {};
4039
41- QueryBuilder () : super ();
40+ QueryBuilder (this .object ) : super ();
4241
4342 void ascending (String attribute) {}
4443
4544 void descending (String attribute) {}
4645
4746 void startsWith (String key, dynamic value) {}
4847
49- Future <Map > first () {
50- Map <String , dynamic > t = {};
51- foo () => t;
52- return new Future (foo);
53- }
54-
5548 query () async {
5649 return object.query (_buildQuery ());
5750 }
5851
5952 String _buildQuery () {
60- var existsMap = Map <String , String >();
53+ var existsMap = Map ();
54+
55+ // START QUERY
56+ String query = "where=" ;
6157
58+ // ADD PARAM TO MAP
59+
60+ //Needs fixing
6261 if (equals != null ) existsMap = _runThroughQueryParams (equals, field);
63- if (containedIn != null )
64- existsMap = _runThroughQueryParamsWithName (containedIn, "in" , field);
65- if (regEx != null )
66- existsMap = _runThroughQueryParamsWithName (regEx, "regex" , field);
67- if (greaterThan != null )
68- existsMap = _runThroughQueryParamsWithName (greaterThan, "gt" , field);
69- if (contains != null )
70- existsMap =
71- _runThroughQueryParamsWithSearchTerms (contains, "term" , field);
72-
73- //String query = r"""where={"Name":{"$text":{"$search":{"$term":"Diet"}}}}""";
74- String query = "where=${JsonEncoder ().convert (existsMap )}" ;
62+ if (contains != null ) existsMap = _runThroughQueryParamsWithName (contains, "\$ term" , field);
63+
64+ // 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);
70+
71+ // 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);
78+
79+ // Works
80+ if (regEx != null ) existsMap = _runThroughQueryParamsWithName (regEx, "\$ regex" , field);
81+
82+ // Doesnt
83+ if (text != null ) existsMap = _runThroughQueryParamsWithName (text, "\$ text" , field);
84+
85+ // -- BUILD QUERY USING MAP
86+ for (var item in existsMap.entries){
87+ query += "{\" ${item .key .toString ()}\" :${item .value }}" ;
88+ }
7589
90+ // -- ADD LIMITER
7691 if (limit != 0 ) query += '?limit=$limit ' ;
7792 if (skip != 0 ) query += '?skip=$skip ' ;
7893
94+ // -- TEST
95+ print ("QUERY: $query " );
96+
7997 return query;
8098 }
8199
82- Map <String , String > _runThroughQueryParams (
83- List <dynamic > list, String queryParam) {
84- Map <String , String > mapToReturn = Map <String , String >();
85- var params = "" ;
100+ Map _runThroughQueryParams (List <dynamic > list, String queryParam) {
101+ Map <String , dynamic > mapToReturn = Map <String , dynamic >();
102+ var params;
86103
87104 if (list.isNotEmpty) {
88105 if (list.length == 1 ) {
@@ -101,16 +118,15 @@ class QueryBuilder {
101118 return mapToReturn;
102119 }
103120
104- Map <String , String > _runThroughQueryParamsWithName (
105- List <dynamic > list, String queryParam, String fieldName) {
121+ Map <String , String > _runThroughQueryParamsWithName (List <dynamic > list, String queryParam, String fieldName) {
106122 Map <String , String > mapToReturn = Map <String , String >();
107123 Map <String , dynamic > mapWithParamData = Map <String , dynamic >();
108124
109125 for (var item in list) {
110- mapWithParamData[ " \$ $ queryParam " ] = item;
126+ mapWithParamData. putIfAbsent ( queryParam, item) ;
111127 }
112128
113- var params = JsonEncoder ().convert (mapWithParamData). toString ( );
129+ var params = JsonEncoder ().convert (mapWithParamData);
114130
115131 mapToReturn[fieldName] = params;
116132
0 commit comments