chore: refactor ms2qs function type
This commit is contained in:
parent
9786a6c267
commit
edb35c08a8
|
@ -274,9 +274,12 @@ list_users(QueryString, #{user_group := UserGroup}) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% QueryString to MatchSpec
|
%% 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}) ->
|
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 username funcs
|
||||||
fuzzy_filter_fun([]) ->
|
fuzzy_filter_fun([]) ->
|
||||||
|
|
|
@ -300,9 +300,12 @@ list_users(QueryString, #{user_group := UserGroup}) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% QueryString to MatchSpec
|
%% 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}) ->
|
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 username funcs
|
||||||
fuzzy_filter_fun([]) ->
|
fuzzy_filter_fun([]) ->
|
||||||
|
|
|
@ -268,9 +268,9 @@ extra_sub_props(Props) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% QueryString to MatchSpec
|
%% 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(_Tab, {Qs, Fuzzy}) ->
|
||||||
{qs2ms(Qs), fuzzy_filter_fun(Fuzzy)}.
|
#{match_spec => qs2ms(Qs), fuzzy_fun => fuzzy_filter_fun(Fuzzy)}.
|
||||||
|
|
||||||
qs2ms(Qs) ->
|
qs2ms(Qs) ->
|
||||||
{MtchHead, Conds} = qs2ms(Qs, 2, {#{}, []}),
|
{MtchHead, Conds} = qs2ms(Qs, 2, {#{}, []}),
|
||||||
|
|
|
@ -127,8 +127,9 @@ limit(Params) ->
|
||||||
{Key :: binary(), Type :: atom | binary | integer | timestamp | ip | ip_port}
|
{Key :: binary(), Type :: atom | binary | integer | timestamp | ip | ip_port}
|
||||||
].
|
].
|
||||||
|
|
||||||
-type query_to_match_spec_fun() ::
|
-type query_to_match_spec_fun() :: fun((list(), list()) -> match_spec_and_filter()).
|
||||||
fun((list(), list()) -> {ets:match_spec(), fuzzy_filter_fun()}).
|
|
||||||
|
-type match_spec_and_filter() :: #{match_spec := ets:match_spec(), fuzzy_fun := fuzzy_filter_fun()}.
|
||||||
|
|
||||||
-type fuzzy_filter_fun() :: undefined | {fun(), list()}.
|
-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()
|
%% msfun := query_to_match_spec_fun()
|
||||||
%% }
|
%% }
|
||||||
init_query_state(Tab, QString, MsFun, _Meta = #{page := Page, limit := Limit}) ->
|
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
|
%% assert FuzzyFun type
|
||||||
_ =
|
_ =
|
||||||
case FuzzyFun of
|
case FuzzyFun of
|
||||||
|
|
|
@ -136,9 +136,9 @@ alarms(delete, _Params) ->
|
||||||
%%%==============================================================================================
|
%%%==============================================================================================
|
||||||
%% internal
|
%% 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}) ->
|
qs2ms(_Tab, {_Qs, _Fuzzy}) ->
|
||||||
{[{'$1', [], ['$1']}], undefined}.
|
#{match_spec => [{'$1', [], ['$1']}], fuzzy_fun => undefined}.
|
||||||
|
|
||||||
format_alarm(WhichNode, Alarm) ->
|
format_alarm(WhichNode, Alarm) ->
|
||||||
emqx_alarm:format(WhichNode, Alarm).
|
emqx_alarm:format(WhichNode, Alarm).
|
||||||
|
|
|
@ -786,9 +786,12 @@ do_unsubscribe(ClientID, Topic) ->
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% QueryString to Match Spec
|
%% 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(_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().
|
-spec qs2ms(list()) -> ets:match_spec().
|
||||||
qs2ms(Qs) ->
|
qs2ms(Qs) ->
|
||||||
|
|
|
@ -190,9 +190,9 @@ get_topic(Topic, _) ->
|
||||||
%% QueryString to MatchSpec
|
%% 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(_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) ->
|
gen_match_spec(Qs) ->
|
||||||
MtchHead = gen_match_spec(Qs, {{'_', '_'}, #{}}),
|
MtchHead = gen_match_spec(Qs, {{'_', '_'}, #{}}),
|
||||||
|
|
|
@ -143,8 +143,12 @@ generate_topic(Params = #{topic := Topic}) ->
|
||||||
generate_topic(Params) ->
|
generate_topic(Params) ->
|
||||||
Params.
|
Params.
|
||||||
|
|
||||||
|
-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
|
||||||
qs2ms(_Tab, {Qs, _}) ->
|
qs2ms(_Tab, {Qs, _}) ->
|
||||||
{gen_match_spec(Qs, [{{route, '_', '_'}, [], ['$_']}]), undefined}.
|
#{
|
||||||
|
match_spec => gen_match_spec(Qs, [{{route, '_', '_'}, [], ['$_']}]),
|
||||||
|
fuzzy_fun => undefined
|
||||||
|
}.
|
||||||
|
|
||||||
gen_match_spec([], Res) ->
|
gen_match_spec([], Res) ->
|
||||||
Res;
|
Res;
|
||||||
|
|
|
@ -178,9 +178,12 @@ cluster_list(Params) ->
|
||||||
fun ?MODULE:format_delayed/2
|
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}) ->
|
qs2ms(_Table, {_Qs, _Fuzzy}) ->
|
||||||
{[{'$1', [], ['$1']}], undefined}.
|
#{
|
||||||
|
match_spec => [{'$1', [], ['$1']}],
|
||||||
|
fuzzy_fun => undefined
|
||||||
|
}.
|
||||||
|
|
||||||
format_delayed(Delayed) ->
|
format_delayed(Delayed) ->
|
||||||
format_delayed(node(), Delayed).
|
format_delayed(node(), Delayed).
|
||||||
|
|
|
@ -553,12 +553,16 @@ filter_out_request_body(Conf) ->
|
||||||
],
|
],
|
||||||
maps:without(ExtraConfs, Conf).
|
maps:without(ExtraConfs, Conf).
|
||||||
|
|
||||||
|
-spec qs2ms(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
|
||||||
qs2ms(_Tab, {Qs, Fuzzy}) ->
|
qs2ms(_Tab, {Qs, Fuzzy}) ->
|
||||||
case lists:keytake(from, 1, Qs) of
|
case lists:keytake(from, 1, Qs) of
|
||||||
false ->
|
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} ->
|
{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.
|
end.
|
||||||
|
|
||||||
generate_match_spec(Qs) ->
|
generate_match_spec(Qs) ->
|
||||||
|
|
Loading…
Reference in New Issue