refactor(emqx_bridge): be more generic in to_bridge_v1_config
This commit is contained in:
parent
be31486983
commit
31a7301f6f
|
@ -26,6 +26,7 @@
|
|||
bridge_v1_type_to_action_type/1,
|
||||
is_action_type/1,
|
||||
registered_schema_modules/0,
|
||||
connector_action_config_to_bridge_v1_config/2,
|
||||
connector_action_config_to_bridge_v1_config/3,
|
||||
has_custom_connector_action_config_to_bridge_v1_config/1,
|
||||
bridge_v1_config_to_connector_config/2,
|
||||
|
@ -168,8 +169,22 @@ has_custom_connector_action_config_to_bridge_v1_config(ActionOrBridgeType) ->
|
|||
|
||||
connector_action_config_to_bridge_v1_config(ActionOrBridgeType, ConnectorConfig, ActionConfig) ->
|
||||
Module = get_action_info_module(ActionOrBridgeType),
|
||||
%% should only be called if defined
|
||||
Module:connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig).
|
||||
case erlang:function_exported(Module, connector_action_config_to_bridge_v1_config, 2) of
|
||||
true ->
|
||||
Module:connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig);
|
||||
false ->
|
||||
connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig)
|
||||
end.
|
||||
|
||||
connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig) ->
|
||||
Merged = emqx_utils_maps:deep_merge(
|
||||
maps:without(
|
||||
[<<"connector">>],
|
||||
emqx_utils_maps:unindent(<<"parameters">>, ActionConfig)
|
||||
),
|
||||
emqx_utils_maps:unindent(<<"parameters">>, ConnectorConfig)
|
||||
),
|
||||
maps:without([<<"description">>], Merged).
|
||||
|
||||
has_custom_bridge_v1_config_to_connector_config(ActionOrBridgeType) ->
|
||||
Module = get_action_info_module(ActionOrBridgeType),
|
||||
|
|
|
@ -1112,40 +1112,25 @@ bridge_v1_lookup_and_transform(ActionType, Name) ->
|
|||
not_bridge_v1_compatible_error() ->
|
||||
{error, not_bridge_v1_compatible}.
|
||||
|
||||
connector_raw_config(Connector, ConnectorType) ->
|
||||
get_raw_with_defaults(Connector, ConnectorType, <<"connectors">>, emqx_connector_schema).
|
||||
|
||||
action_raw_config(Action, ActionType) ->
|
||||
get_raw_with_defaults(Action, ActionType, <<"actions">>, emqx_bridge_v2_schema).
|
||||
|
||||
get_raw_with_defaults(Config, Type, TopLevelConf, SchemaModule) ->
|
||||
RawConfig = maps:get(raw_config, Config),
|
||||
fill_defaults(Type, RawConfig, TopLevelConf, SchemaModule).
|
||||
|
||||
bridge_v1_lookup_and_transform_helper(
|
||||
BridgeV1Type, BridgeName, ActionType, Action, ConnectorType, Connector
|
||||
) ->
|
||||
ConnectorRawConfig1 = maps:get(raw_config, Connector),
|
||||
ConnectorRawConfig2 = fill_defaults(
|
||||
ConnectorType,
|
||||
ConnectorRawConfig1,
|
||||
<<"connectors">>,
|
||||
emqx_connector_schema
|
||||
ConnectorRawConfig = connector_raw_config(Connector, ConnectorType),
|
||||
ActionRawConfig = action_raw_config(Action, ActionType),
|
||||
BridgeV1Config = emqx_action_info:connector_action_config_to_bridge_v1_config(
|
||||
BridgeV1Type, ConnectorRawConfig, ActionRawConfig
|
||||
),
|
||||
ActionRawConfig1 = maps:get(raw_config, Action),
|
||||
ActionRawConfig2 = fill_defaults(
|
||||
ActionType,
|
||||
ActionRawConfig1,
|
||||
<<"actions">>,
|
||||
emqx_bridge_v2_schema
|
||||
),
|
||||
BridgeV1ConfigFinal =
|
||||
case
|
||||
emqx_action_info:has_custom_connector_action_config_to_bridge_v1_config(BridgeV1Type)
|
||||
of
|
||||
false ->
|
||||
BridgeV1Config1 = maps:remove(<<"connector">>, ActionRawConfig2),
|
||||
%% Move parameters to the top level
|
||||
ParametersMap = maps:get(<<"parameters">>, BridgeV1Config1, #{}),
|
||||
BridgeV1Config2 = maps:remove(<<"parameters">>, BridgeV1Config1),
|
||||
BridgeV1Config3 = emqx_utils_maps:deep_merge(BridgeV1Config2, ParametersMap),
|
||||
emqx_utils_maps:deep_merge(ConnectorRawConfig2, BridgeV1Config3);
|
||||
true ->
|
||||
emqx_action_info:connector_action_config_to_bridge_v1_config(
|
||||
BridgeV1Type, ConnectorRawConfig2, ActionRawConfig2
|
||||
)
|
||||
end,
|
||||
BridgeV1Tmp = maps:put(raw_config, BridgeV1ConfigFinal, Action),
|
||||
BridgeV1Tmp = maps:put(raw_config, BridgeV1Config, Action),
|
||||
BridgeV1 = maps:remove(status, BridgeV1Tmp),
|
||||
BridgeV2Status = maps:get(status, Action, undefined),
|
||||
BridgeV2Error = maps:get(error, Action, undefined),
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
-export([
|
||||
bridge_v1_config_to_action_config/2,
|
||||
bridge_v1_config_to_connector_config/1,
|
||||
connector_action_config_to_bridge_v1_config/2,
|
||||
action_type_name/0,
|
||||
bridge_v1_type_name/0,
|
||||
connector_type_name/0,
|
||||
|
@ -26,22 +25,6 @@
|
|||
|
||||
-define(SCHEMA_MODULE, emqx_bridge_mongodb).
|
||||
|
||||
connector_action_config_to_bridge_v1_config(
|
||||
#{<<"parameters">> := #{<<"mongo_type">> := MongoType}} = ConnectorConfig,
|
||||
ActionConfig
|
||||
) ->
|
||||
MergedConfig =
|
||||
emqx_utils_maps:deep_merge(
|
||||
maps:without(
|
||||
[<<"connector">>],
|
||||
emqx_utils_maps:unindent(<<"parameters">>, ActionConfig)
|
||||
),
|
||||
emqx_utils_maps:unindent(<<"parameters">>, ConnectorConfig)
|
||||
),
|
||||
BridgeV1Type = v1_type(MongoType),
|
||||
BridgeV1Keys = schema_keys(BridgeV1Type),
|
||||
maps:with(BridgeV1Keys, MergedConfig).
|
||||
|
||||
bridge_v1_config_to_action_config(BridgeV1Config, ConnectorName) ->
|
||||
ActionTopLevelKeys = schema_keys(mongodb_action),
|
||||
ActionParametersKeys = schema_keys(action_parameters),
|
||||
|
|
Loading…
Reference in New Issue