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,
|
||||
[{description, "EMQ X Rule Engine"},
|
||||
{vsn, "4.3.8"}, % strict semver, bump manually!
|
||||
{vsn, "4.3.9"}, % strict semver, bump manually!
|
||||
{modules, []},
|
||||
{registered, [emqx_rule_engine_sup, emqx_rule_registry]},
|
||||
{applications, [kernel,stdlib,rulesql,getopt]},
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
%% -*- mode: erlang -*-
|
||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{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_engine_api,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_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_engine_api,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||
|
|
|
@ -197,6 +197,9 @@
|
|||
, rfc3339_to_unix_ts/2
|
||||
, now_timestamp/0
|
||||
, now_timestamp/1
|
||||
, mongo_date/0
|
||||
, mongo_date/1
|
||||
, mongo_date/2
|
||||
]).
|
||||
|
||||
%% Proc Dict Func
|
||||
|
@ -900,6 +903,24 @@ time_unit(<<"millisecond">>) -> millisecond;
|
|||
time_unit(<<"microsecond">>) -> microsecond;
|
||||
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.
|
||||
%% Here the emqx_rule_funcs module acts as a proxy, forwarding
|
||||
%% the function handling to the worker module.
|
||||
|
|
Loading…
Reference in New Issue