From 9feba802e9add26a0f0d7542dc3eee9d5f7a7531 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Fri, 17 Nov 2023 17:53:30 +0100 Subject: [PATCH] chore: add convenience function for creating action schemas --- .../src/schema/emqx_bridge_v2_schema.erl | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl b/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl index ede783e97..9016ea97c 100644 --- a/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl +++ b/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl @@ -40,6 +40,8 @@ -export([types/0, types_sc/0]). +-export([make_action_schema/1]). + -export_type([action_type/0]). %% Should we explicitly list them here so dialyzer may be more helpful? @@ -116,7 +118,9 @@ roots() -> end. fields(actions) -> - registered_schema_fields(). + registered_schema_fields(); +fields(resource_opts) -> + emqx_resource_schema:create_opts(_Overrides = []). registered_schema_fields() -> [ @@ -150,6 +154,24 @@ examples(Method) -> SchemaModules = [Mod || {_, Mod} <- emqx_action_info:registered_schema_modules()], lists:foldl(Fun, #{}, SchemaModules). +%%====================================================================================== +%% Helper functions for making HOCON Schema +%%====================================================================================== + +make_action_schema(ActionParametersRef) -> + [ + {enable, mk(boolean(), #{desc => ?DESC("config_enable"), default => true})}, + {connector, + mk(binary(), #{ + desc => ?DESC(emqx_connector_schema, "connector_field"), required => true + })}, + {description, emqx_schema:description_schema()}, + {local_topic, mk(binary(), #{required => false, desc => ?DESC(mqtt_topic)})}, + {parameters, ActionParametersRef}, + {resource_opts, + mk(ref(?MODULE, resource_opts), #{default => #{}, desc => ?DESC(resource_opts)})} + ]. + -ifdef(TEST). -include_lib("hocon/include/hocon_types.hrl"). schema_homogeneous_test() ->