From 872698d19e711978debe73c699c06a167d68adb9 Mon Sep 17 00:00:00 2001 From: firest Date: Fri, 30 Jun 2023 11:42:24 +0800 Subject: [PATCH] feat(ruleengine): port random && uuid_v4 functions from v4 --- .../src/emqx_rule_engine.app.src | 2 +- apps/emqx_rule_engine/src/emqx_rule_funcs.erl | 22 +++++++++++++++++++ mix.exs | 4 +++- rebar.config | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src index 321d4a8b0..ccd436d86 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.app.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.app.src @@ -5,7 +5,7 @@ {vsn, "5.0.20"}, {modules, []}, {registered, [emqx_rule_engine_sup, emqx_rule_engine]}, - {applications, [kernel, stdlib, rulesql, getopt, emqx_ctl]}, + {applications, [kernel, stdlib, rulesql, getopt, emqx_ctl, uuid]}, {mod, {emqx_rule_engine_app, []}}, {env, []}, {licenses, ["Apache-2.0"]}, diff --git a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl index de9bf0485..954c8fa88 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl @@ -242,6 +242,13 @@ mongo_date/2 ]). +%% Random Funcs +-export([ + random/0, + uuid_v4/0, + uuid_v4_no_hyphen/0 +]). + %% Proc Dict Func -export([ proc_dict_get/1, @@ -1021,6 +1028,18 @@ term_encode(Term) -> term_decode(Data) when is_binary(Data) -> erlang:binary_to_term(Data). +%%------------------------------------------------------------------------------ +%% Random Funcs +%%------------------------------------------------------------------------------ +random() -> + rand:uniform(). + +uuid_v4() -> + uuid_str(uuid:get_v4(), binary_standard). + +uuid_v4_no_hyphen() -> + uuid_str(uuid:get_v4(), binary_nodash). + %%------------------------------------------------------------------------------ %% Dict Funcs %%------------------------------------------------------------------------------ @@ -1186,3 +1205,6 @@ convert_timestamp(MillisecondsTimestamp) -> Secs = MicroTimestamp div 1000_000 - MegaSecs * 1000_000, MicroSecs = MicroTimestamp rem 1000_000, {MegaSecs, Secs, MicroSecs}. + +uuid_str(UUID, DisplyOpt) -> + uuid:uuid_to_string(UUID, DisplyOpt). diff --git a/mix.exs b/mix.exs index 9de0ad494..32ce4dab1 100644 --- a/mix.exs +++ b/mix.exs @@ -97,7 +97,9 @@ defmodule EMQXUmbrella.MixProject do {:gpb, "4.19.7", override: true, runtime: false}, {:hackney, github: "emqx/hackney", tag: "1.18.1-1", override: true}, # set by hackney (dependency) - {:ssl_verify_fun, "1.1.6", override: true} + {:ssl_verify_fun, "1.1.6", override: true}, + {:uuid, github: "okeuday/uuid", tag: "v2.0.6", override: true}, + {:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true} ] ++ emqx_apps(profile_info, version) ++ enterprise_deps(profile_info) ++ bcrypt_dep() ++ jq_dep() ++ quicer_dep() diff --git a/rebar.config b/rebar.config index c6320c519..4dc97e501 100644 --- a/rebar.config +++ b/rebar.config @@ -83,6 +83,7 @@ , {hackney, {git, "https://github.com/emqx/hackney.git", {tag, "1.18.1-1"}}} %% in conflict by erlavro and rocketmq , {jsone, {git, "https://github.com/emqx/jsone.git", {tag, "1.7.1"}}} + , {uuid, {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.6"}}} ]}. {xref_ignores,