Merge pull request #7424 from mononym/EMQX-3885-e-4-3-9-support-new-mongo-db-bjson-date
feat: Add mongo_date function to support saving timestamp as MongoDB …
This commit is contained in:
commit
d255be2d51
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_rule_engine,
|
{application, emqx_rule_engine,
|
||||||
[{description, "EMQ X Rule Engine"},
|
[{description, "EMQ X Rule Engine"},
|
||||||
{vsn, "4.3.8"}, % strict semver, bump manually!
|
{vsn, "4.3.9"}, % strict semver, bump manually!
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_rule_engine_sup, emqx_rule_registry]},
|
{registered, [emqx_rule_engine_sup, emqx_rule_registry]},
|
||||||
{applications, [kernel,stdlib,rulesql,getopt]},
|
{applications, [kernel,stdlib,rulesql,getopt]},
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.3.7",
|
[{"4.3.8",
|
||||||
|
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.7",
|
||||||
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
@ -78,7 +80,9 @@
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[{"4.3.7",
|
[{"4.3.8",
|
||||||
|
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.7",
|
||||||
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
|
|
|
@ -197,6 +197,9 @@
|
||||||
, rfc3339_to_unix_ts/2
|
, rfc3339_to_unix_ts/2
|
||||||
, now_timestamp/0
|
, now_timestamp/0
|
||||||
, now_timestamp/1
|
, now_timestamp/1
|
||||||
|
, mongo_date/0
|
||||||
|
, mongo_date/1
|
||||||
|
, mongo_date/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% Proc Dict Func
|
%% Proc Dict Func
|
||||||
|
@ -900,6 +903,24 @@ time_unit(<<"millisecond">>) -> millisecond;
|
||||||
time_unit(<<"microsecond">>) -> microsecond;
|
time_unit(<<"microsecond">>) -> microsecond;
|
||||||
time_unit(<<"nanosecond">>) -> nanosecond.
|
time_unit(<<"nanosecond">>) -> nanosecond.
|
||||||
|
|
||||||
|
mongo_date() ->
|
||||||
|
erlang:timestamp().
|
||||||
|
|
||||||
|
mongo_date(MillisecondsTimestamp) ->
|
||||||
|
convert_timestamp(MillisecondsTimestamp).
|
||||||
|
|
||||||
|
mongo_date(Timestamp, Unit) ->
|
||||||
|
InsertedTimeUnit = time_unit(Unit),
|
||||||
|
ScaledEpoch = erlang:convert_time_unit(Timestamp, InsertedTimeUnit, millisecond),
|
||||||
|
convert_timestamp(ScaledEpoch).
|
||||||
|
|
||||||
|
convert_timestamp(MillisecondsTimestamp) ->
|
||||||
|
MicroTimestamp = MillisecondsTimestamp * 1000,
|
||||||
|
MegaSecs = MicroTimestamp div 1000_000_000_000,
|
||||||
|
Secs = MicroTimestamp div 1000_000 - MegaSecs*1000_000,
|
||||||
|
MicroSecs = MicroTimestamp rem 1000_000,
|
||||||
|
{MegaSecs, Secs, MicroSecs}.
|
||||||
|
|
||||||
%% @doc This is for sql funcs that should be handled in the specific modules.
|
%% @doc This is for sql funcs that should be handled in the specific modules.
|
||||||
%% Here the emqx_rule_funcs module acts as a proxy, forwarding
|
%% Here the emqx_rule_funcs module acts as a proxy, forwarding
|
||||||
%% the function handling to the worker module.
|
%% the function handling to the worker module.
|
||||||
|
|
Loading…
Reference in New Issue