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
|
||||
|
||||
-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([]) ->
|
||||
|
|
|
@ -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([]) ->
|
||||
|
|
|
@ -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, {#{}, []}),
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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) ->
|
||||
|
|
|
@ -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, {{'_', '_'}, #{}}),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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) ->
|
||||
|
|
Loading…
Reference in New Issue