From 9b433eb0027212ab9540e0816d17d09e0be31629 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Wed, 13 Jul 2022 10:06:18 +0800 Subject: [PATCH] fix: list_rules support enable_paging --- .../src/emqx_rule_engine_api.erl | 11 +++++++---- .../test/emqx_rule_engine_SUITE.erl | 17 ++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl index fb6b6f3ca..223c672e6 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl @@ -272,11 +272,14 @@ update_rule(#{id := Id}, Params) -> return({error, 400, ?ERR_BADARGS(Reason)}) end. -list_rules(_Bindings, []) -> - return_all(emqx_rule_registry:get_rules_ordered_by_ts()); list_rules(_Bindings, Params) -> - SortFun = fun(#{created_at := C1}, #{created_at := C2}) -> C1 > C2 end, - return({ok, emqx_mgmt_api:node_query(node(), Params, ?RULE_QS_SCHEMA, {?MODULE, query}, SortFun)}). + case proplists:get_value(<<"enable_paging">>, Params, true) of + true -> + SortFun = fun(#{created_at := C1}, #{created_at := C2}) -> C1 > C2 end, + return({ok, emqx_mgmt_api:node_query(node(), Params, ?RULE_QS_SCHEMA, {?MODULE, query}, SortFun)}); + false -> + return_all(emqx_rule_registry:get_rules_ordered_by_ts()) + end. show_rule(#{id := Id}, _Params) -> reply_with(fun emqx_rule_registry:get_rule/1, Id). diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index 7368b5911..9031c3df8 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -528,29 +528,29 @@ t_list_rule_api(_Config) -> end, lists:seq(1, 20)), {ok, #{code := 0, data := Rules11}} = emqx_rule_engine_api:list_rules(#{}, - [{<<"_limit">>,<<"10">>}, {<<"_page">>, <<"1">>}]), + [{<<"_limit">>,<<"10">>}, {<<"_page">>, <<"1">>}, {<<"enable_paging">>, true}]), ?assertEqual(10, length(Rules11)), {ok, #{code := 0, data := Rules12}} = emqx_rule_engine_api:list_rules(#{}, - [{<<"_limit">>,<<"10">>}, {<<"_page">>, <<"2">>}]), + [{<<"_limit">>,<<"10">>}, {<<"_page">>, <<"2">>}, {<<"enable_paging">>, true}]), ?assertEqual(10, length(Rules12)), Rules1 = Rules11 ++ Rules12, [RuleID | _] = AddIds, {ok, #{code := 0}} = emqx_rule_engine_api:update_rule(#{id => RuleID}, [{<<"enabled">>, false}]), - Params1 = [{<<"enabled">>,<<"true">>}], + Params1 = [{<<"enabled">>,<<"true">>}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules2}} = emqx_rule_engine_api:list_rules(#{}, Params1), ?assert(lists:all(fun(#{id := ID}) -> ID =/= RuleID end, Rules2)), - Params2 = [{<<"for">>, RuleID}], + Params2 = [{<<"for">>, RuleID}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules3}} = emqx_rule_engine_api:list_rules(#{}, Params2), ?assert(lists:all(fun(#{id := ID}) -> ID =:= RuleID end, Rules3)), - Params3 = [{<<"_like_id">>,<<"rule:">>}], + Params3 = [{<<"_like_id">>,<<"rule:">>}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules4}} = emqx_rule_engine_api:list_rules(#{}, Params3), ?assertEqual(length(Rules1), length(Rules4)), - Params4 = [{<<"_like_for">>,<<"t/a/">>}], + Params4 = [{<<"_like_for">>,<<"t/a/">>}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules5}} = emqx_rule_engine_api:list_rules(#{}, Params4), ?assertEqual(length(Rules1), length(Rules5)), {ok, #{code := 0}} = emqx_rule_engine_api:update_rule(#{id => RuleID}, @@ -559,7 +559,7 @@ t_list_rule_api(_Config) -> ?assert(lists:all(fun(#{id := ID}) -> ID =/= RuleID end, Rules6)), ?assertEqual(1, length(Rules1) - length(Rules6)), - Params5 = [{<<"_match_for">>,<<"t/+/+">>}], + Params5 = [{<<"_match_for">>,<<"t/+/+">>}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules7}} = emqx_rule_engine_api:list_rules(#{}, Params5), ?assertEqual(length(Rules1), length(Rules7)), {ok, #{code := 0}} = emqx_rule_engine_api:update_rule(#{id => RuleID}, @@ -568,7 +568,7 @@ t_list_rule_api(_Config) -> ?assert(lists:all(fun(#{id := ID}) -> ID =/= RuleID end, Rules8)), ?assertEqual(1, length(Rules1) - length(Rules8)), - Params6 = [{<<"_like_description">>,<<"rule">>}], + Params6 = [{<<"_like_description">>,<<"rule">>}, {<<"enable_paging">>, true}], {ok, #{code := 0, data := Rules9}} = emqx_rule_engine_api:list_rules(#{}, Params6), ?assertEqual(length(Rules1), length(Rules9)), {ok, #{code := 0}} = emqx_rule_engine_api:update_rule(#{id => RuleID}, @@ -582,7 +582,6 @@ t_list_rule_api(_Config) -> end, AddIds), ok. - t_list_actions_api(_Config) -> {ok, #{code := 0, data := Actions}} = emqx_rule_engine_api:list_actions(#{}, []), %ct:pal("RList : ~p", [Actions]),