Skip to content

Commit

Permalink
add ascending / descending / limit / skip function
Browse files Browse the repository at this point in the history
  • Loading branch information
LunaGao committed Jan 10, 2019
1 parent e10f8a1 commit 2f3c6e0
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

import cn.leancloud.AVObject;
import cn.leancloud.types.AVNull;
import io.flutter.plugin.common.MethodCall;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

import cn.leancloud.AVObject;
Expand Down Expand Up @@ -91,6 +90,24 @@ public void onComplete() {}
case "lessThanOrEqualTo":
avQuery.whereLessThanOrEqualTo(oneQuery.getString("arg1"), oneQuery.get("arg2"));
break;
case "orderByAscending":
avQuery.orderByAscending(oneQuery.getString("arg1"));
break;
case "orderByDescending":
avQuery.orderByDescending(oneQuery.getString("arg1"));
break;
case "addAscendingOrder":
avQuery.addAscendingOrder(oneQuery.getString("arg1"));
break;
case "addDescendingOrder":
avQuery.addDescendingOrder(oneQuery.getString("arg1"));
break;
case "limit":
avQuery.limit(oneQuery.getIntValue("arg1"));
break;
case "skip":
avQuery.skip(oneQuery.getIntValue("arg1"));
break;
default:
result.error("params-error", "no such query queryMethod name, please check again", null);
break;
Expand Down
2 changes: 2 additions & 0 deletions example/lib/list_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ class _ListScreenState extends State<ListScreen> {
// avQuery.whereGreaterThanOrEqualTo("int_value", 20);
// avQuery.whereLessThan("int_value", 20);
// avQuery.whereLessThanOrEqualTo("int_value", 20);
avQuery.limit(10);
avQuery.skip(1);
avQuery.find().then((objects) {
print("All Objects Queryed!");
setState(() { });
Expand Down
44 changes: 32 additions & 12 deletions ios/Classes/LeancloudQuery.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@

@implementation LeancloudQuery

const NSString *QUERYMETHOD = @"queryMethod";
const NSString *ARG1 = @"arg1";
const NSString *ARG2 = @"arg2";

- (void) query:(FlutterMethodCall*)call result:(FlutterResult)result {
NSDictionary *avQueryJson = [LeancloudArgsConverter getAVQueryJsonObject:call result:result];
NSString *className = avQueryJson[@"className"];
Expand All @@ -28,18 +32,34 @@ - (void) query:(FlutterMethodCall*)call result:(FlutterResult)result {
return;
}];
}
if([oneQuery[@"queryMethod"] isEqualToString:@"equalTo"]) {
[query whereKey:oneQuery[@"arg1"] equalTo:oneQuery[@"arg2"]];
} else if([oneQuery[@"queryMethod"] isEqualToString:@"notEqualTo"]) {
[query whereKey:oneQuery[@"arg1"] notEqualTo:oneQuery[@"arg2"]];
} else if([oneQuery[@"queryMethod"] isEqualToString:@"greaterThan"]) {
[query whereKey:oneQuery[@"arg1"] greaterThan:oneQuery[@"arg2"]];
} else if([oneQuery[@"queryMethod"] isEqualToString:@"greaterThanOrEqualTo"]) {
[query whereKey:oneQuery[@"arg1"] greaterThanOrEqualTo:oneQuery[@"arg2"]];
} else if([oneQuery[@"queryMethod"] isEqualToString:@"lessThan"]) {
[query whereKey:oneQuery[@"arg1"] lessThan:oneQuery[@"arg2"]];
} else if([oneQuery[@"queryMethod"] isEqualToString:@"lessThanOrEqualTo"]) {
[query whereKey:oneQuery[@"arg1"] lessThanOrEqualTo:oneQuery[@"arg2"]];
if([oneQuery[QUERYMETHOD] isEqualToString:@"equalTo"]) {
[query whereKey:oneQuery[ARG1] equalTo:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"notEqualTo"]) {
[query whereKey:oneQuery[ARG1] notEqualTo:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"greaterThan"]) {
[query whereKey:oneQuery[ARG1] greaterThan:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"greaterThanOrEqualTo"]) {
[query whereKey:oneQuery[ARG1] greaterThanOrEqualTo:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"lessThan"]) {
[query whereKey:oneQuery[ARG1] lessThan:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"lessThanOrEqualTo"]) {
[query whereKey:oneQuery[ARG1] lessThanOrEqualTo:oneQuery[ARG2]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"orderByAscending"]) {
[query orderByAscending:oneQuery[ARG1]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"orderByDescending"]) {
[query orderByDescending:oneQuery[ARG1]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"addAscendingOrder"]) {
[query addDescendingOrder:oneQuery[ARG1]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"addDescendingOrder"]) {
[query addDescendingOrder:oneQuery[ARG1]];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"limit"]) {
query.limit = [oneQuery[ARG1] intValue];
} else if([oneQuery[QUERYMETHOD] isEqualToString:@"skip"]) {
query.skip = [oneQuery[ARG1] intValue];
} else {
result([FlutterError errorWithCode:@"params-error"
message:@"no such query queryMethod name, please check again"
details:[NSString stringWithFormat:@"no such query queryMethod name, %@", oneQuery[QUERYMETHOD]]]);
}
}
[query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
Expand Down
36 changes: 36 additions & 0 deletions lib/leancloud_query.dart
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,42 @@ class AVQuery {
return lists;
}

/// set query result limit count
AVQuery limit(int limit) {
_setQueriesValue("limit", limit, null);
return this;
}

/// set query result by ascending
AVQuery orderByAscending(String key) {
_setQueriesValue("orderByAscending", key, null);
return this;
}

/// set query result by descending
AVQuery orderByDescending(String key) {
_setQueriesValue("orderByDescending", key, null);
return this;
}

/// set query order by [key] column ascending
AVQuery addAscendingOrder(String key) {
_setQueriesValue("addAscendingOrder", key, null);
return this;
}

/// set query order by [key] column descending
AVQuery addDescendingOrder(String key) {
_setQueriesValue("addDescendingOrder", key, null);
return this;
}

/// set query result skip count
AVQuery skip(int skip) {
_setQueriesValue("skip", skip, null);
return this;
}

/// Set equal to condition
AVQuery whereEqualTo(String key, dynamic value) {
_setQueriesValue("equalTo", key, value);
Expand Down

0 comments on commit 2f3c6e0

Please sign in to comment.