diff --git a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl index 796a4a4d1..bc5e2eb74 100644 --- a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl +++ b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl @@ -53,7 +53,8 @@ fields("config") -> ]; fields("config_connector") -> emqx_connector_schema:common_fields() ++ - fields("connection_fields"); + fields("connection_fields") ++ + emqx_connector_schema:resource_opts_ref(?MODULE, connector_resource_opts); fields("connection_fields") -> [ {parameters, @@ -93,6 +94,8 @@ fields(action_parameters) -> {collection, mk(binary(), #{desc => ?DESC("collection"), default => <<"mqtt">>})}, {payload_template, mk(binary(), #{required => false, desc => ?DESC("payload_template")})} ]; +fields(connector_resource_opts) -> + emqx_connector_schema:resource_opts_fields(); fields(resource_opts) -> fields("creation_opts"); fields(mongodb_rs) -> @@ -202,6 +205,8 @@ desc("creation_opts") -> ?DESC(emqx_resource_schema, "creation_opts"); desc(resource_opts) -> ?DESC(emqx_resource_schema, "resource_opts"); +desc(connector_resource_opts) -> + ?DESC(emqx_resource_schema, "resource_opts"); desc(mongodb_rs) -> ?DESC(mongodb_rs_conf); desc(mongodb_sharded) -> diff --git a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_action_info.erl b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_action_info.erl index 8bbe5ff3a..823418f28 100644 --- a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_action_info.erl +++ b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_action_info.erl @@ -54,7 +54,15 @@ bridge_v1_config_to_connector_config(BridgeV1Config) -> ConnectorTopLevelKeys = schema_keys("config_connector"), ConnectorKeys = maps:keys(BridgeV1Config) -- (ActionKeys -- ConnectorTopLevelKeys), ConnectorParametersKeys = ConnectorKeys -- ConnectorTopLevelKeys, - make_config_map(ConnectorKeys, ConnectorParametersKeys, BridgeV1Config). + ConnConfig0 = make_config_map(ConnectorKeys, ConnectorParametersKeys, BridgeV1Config), + emqx_utils_maps:update_if_present( + <<"resource_opts">>, + fun(ResourceOpts) -> + CommonROSubfields = emqx_connector_schema:common_resource_opts_subfields_bin(), + maps:with(CommonROSubfields, ResourceOpts) + end, + ConnConfig0 + ). make_config_map(PickKeys, IndentKeys, Config) -> Conf0 = maps:with(PickKeys, Config),