Преглед изворни кода

chore: refactor ms2qs function type

JianBo He пре 3 година
родитељ
комит
edb35c08a8

+ 5 - 2
apps/emqx_authn/src/enhanced_authn/emqx_enhanced_authn_scram_mnesia.erl

@@ -274,9 +274,12 @@ list_users(QueryString, #{user_group := UserGroup}) ->
 %%--------------------------------------------------------------------
 %% QueryString to MatchSpec
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {QString, Fuzzy}) ->
-    {ms_from_qstring(QString), fuzzy_filter_fun(Fuzzy)}.
+    #{
+        match_spec => ms_from_qstring(QString),
+        fuzzy_fun => fuzzy_filter_fun(Fuzzy)
+    }.
 
 %% Fuzzy username funcs
 fuzzy_filter_fun([]) ->

+ 5 - 2
apps/emqx_authn/src/simple_authn/emqx_authn_mnesia.erl

@@ -300,9 +300,12 @@ list_users(QueryString, #{user_group := UserGroup}) ->
 %%--------------------------------------------------------------------
 %% QueryString to MatchSpec
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {QString, FuzzyQString}) ->
-    {ms_from_qstring(QString), fuzzy_filter_fun(FuzzyQString)}.
+    #{
+        match_spec => ms_from_qstring(QString),
+        fuzzy_fun => fuzzy_filter_fun(FuzzyQString)
+    }.
 
 %% Fuzzy username funcs
 fuzzy_filter_fun([]) ->

+ 2 - 2
apps/emqx_gateway/src/emqx_gateway_api_clients.erl

@@ -268,9 +268,9 @@ extra_sub_props(Props) ->
 %%--------------------------------------------------------------------
 %% QueryString to MatchSpec
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {Qs, Fuzzy}) ->
-    {qs2ms(Qs), fuzzy_filter_fun(Fuzzy)}.
+    #{match_spec => qs2ms(Qs), fuzzy_fun => fuzzy_filter_fun(Fuzzy)}.
 
 qs2ms(Qs) ->
     {MtchHead, Conds} = qs2ms(Qs, 2, {#{}, []}),

+ 4 - 3
apps/emqx_management/src/emqx_mgmt_api.erl

@@ -127,8 +127,9 @@ limit(Params) ->
     {Key :: binary(), Type :: atom | binary | integer | timestamp | ip | ip_port}
 ].
 
--type query_to_match_spec_fun() ::
-    fun((list(), list()) -> {ets:match_spec(), fuzzy_filter_fun()}).
+-type query_to_match_spec_fun() :: fun((list(), list()) -> match_spec_and_filter()).
+
+-type match_spec_and_filter() :: #{match_spec := ets:match_spec(), fuzzy_fun := fuzzy_filter_fun()}.
 
 -type fuzzy_filter_fun() :: undefined | {fun(), list()}.
 
@@ -270,7 +271,7 @@ collect_total_from_tail_nodes(Nodes, QueryState, ResultAcc = #{total := TotalAcc
 %%    msfun := query_to_match_spec_fun()
 %%    }
 init_query_state(Tab, QString, MsFun, _Meta = #{page := Page, limit := Limit}) ->
-    {Ms, FuzzyFun} = erlang:apply(MsFun, [Tab, QString]),
+    #{match_spec := Ms, fuzzy_fun := FuzzyFun} = erlang:apply(MsFun, [Tab, QString]),
     %% assert FuzzyFun type
     _ =
         case FuzzyFun of

+ 2 - 2
apps/emqx_management/src/emqx_mgmt_api_alarms.erl

@@ -136,9 +136,9 @@ alarms(delete, _Params) ->
 %%%==============================================================================================
 %% internal
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {_Qs, _Fuzzy}) ->
-    {[{'$1', [], ['$1']}], undefined}.
+    #{match_spec => [{'$1', [], ['$1']}], fuzzy_fun => undefined}.
 
 format_alarm(WhichNode, Alarm) ->
     emqx_alarm:format(WhichNode, Alarm).

+ 5 - 2
apps/emqx_management/src/emqx_mgmt_api_clients.erl

@@ -786,9 +786,12 @@ do_unsubscribe(ClientID, Topic) ->
 %%--------------------------------------------------------------------
 %% QueryString to Match Spec
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {QString, FuzzyQString}) ->
-    {qs2ms(QString), fuzzy_filter_fun(FuzzyQString)}.
+    #{
+        match_spec => qs2ms(QString),
+        fuzzy_fun => fuzzy_filter_fun(FuzzyQString)
+    }.
 
 -spec qs2ms(list()) -> ets:match_spec().
 qs2ms(Qs) ->

+ 2 - 2
apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl

@@ -190,9 +190,9 @@ get_topic(Topic, _) ->
 %% QueryString to MatchSpec
 %%--------------------------------------------------------------------
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {Qs, Fuzzy}) ->
-    {gen_match_spec(Qs), fuzzy_filter_fun(Fuzzy)}.
+    #{match_spec => gen_match_spec(Qs), fuzzy_fun => fuzzy_filter_fun(Fuzzy)}.
 
 gen_match_spec(Qs) ->
     MtchHead = gen_match_spec(Qs, {{'_', '_'}, #{}}),

+ 5 - 1
apps/emqx_management/src/emqx_mgmt_api_topics.erl

@@ -143,8 +143,12 @@ generate_topic(Params = #{topic := Topic}) ->
 generate_topic(Params) ->
     Params.
 
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {Qs, _}) ->
-    {gen_match_spec(Qs, [{{route, '_', '_'}, [], ['$_']}]), undefined}.
+    #{
+        match_spec => gen_match_spec(Qs, [{{route, '_', '_'}, [], ['$_']}]),
+        fuzzy_fun => undefined
+    }.
 
 gen_match_spec([], Res) ->
     Res;

+ 5 - 2
apps/emqx_modules/src/emqx_delayed.erl

@@ -178,9 +178,12 @@ cluster_list(Params) ->
         fun ?MODULE:format_delayed/2
     ).
 
--spec qs2ms(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}.
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Table, {_Qs, _Fuzzy}) ->
-    {[{'$1', [], ['$1']}], undefined}.
+    #{
+        match_spec => [{'$1', [], ['$1']}],
+        fuzzy_fun => undefined
+    }.
 
 format_delayed(Delayed) ->
     format_delayed(node(), Delayed).

+ 6 - 2
apps/emqx_rule_engine/src/emqx_rule_engine_api.erl

@@ -553,12 +553,16 @@ filter_out_request_body(Conf) ->
     ],
     maps:without(ExtraConfs, Conf).
 
+-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
 qs2ms(_Tab, {Qs, Fuzzy}) ->
     case lists:keytake(from, 1, Qs) of
         false ->
-            {generate_match_spec(Qs), fuzzy_match_fun(Fuzzy)};
+            #{match_spec => generate_match_spec(Qs), fuzzy_fun => fuzzy_match_fun(Fuzzy)};
         {value, {from, '=:=', From}, Ls} ->
-            {generate_match_spec(Ls), fuzzy_match_fun([{from, '=:=', From} | Fuzzy])}
+            #{
+                match_spec => generate_match_spec(Ls),
+                fuzzy_fun => fuzzy_match_fun([{from, '=:=', From} | Fuzzy])
+            }
     end.
 
 generate_match_spec(Qs) ->