Sfoglia il codice sorgente

refactor(schema): ensure roots/0 and namespace/0 for all schema modules

Zaiming (Stone) Shi 2 anni fa
parent
commit
f57f617ba3
44 ha cambiato i file con 150 aggiunte e 49 eliminazioni
  1. 4 1
      apps/emqx_auth/src/emqx_authn/emqx_authn_api.erl
  2. 5 1
      apps/emqx_auth/src/emqx_authz/emqx_authz_api_sources.erl
  3. 4 1
      apps/emqx_auth/src/emqx_authz/emqx_authz_schema.erl
  4. 4 1
      apps/emqx_auth_mnesia/src/emqx_authz_api_mnesia.erl
  5. 4 1
      apps/emqx_bridge/src/schema/emqx_bridge_enterprise.erl
  6. 3 1
      apps/emqx_bridge_cassandra/src/emqx_bridge_cassandra_connector.erl
  7. 1 1
      apps/emqx_bridge_clickhouse/src/emqx_bridge_clickhouse.app.src
  8. 4 1
      apps/emqx_bridge_clickhouse/src/emqx_bridge_clickhouse_connector.erl
  9. 1 1
      apps/emqx_bridge_dynamo/src/emqx_bridge_dynamo.app.src
  10. 4 1
      apps/emqx_bridge_dynamo/src/emqx_bridge_dynamo_connector.erl
  11. 2 1
      apps/emqx_bridge_rocketmq/src/emqx_bridge_rocketmq.erl
  12. 4 1
      apps/emqx_bridge_rocketmq/src/emqx_bridge_rocketmq_connector.erl
  13. 1 1
      apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.app.src
  14. 4 1
      apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver_connector.erl
  15. 0 6
      apps/emqx_connector/src/emqx_connector_schema_lib.erl
  16. 4 2
      apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl
  17. 4 1
      apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl
  18. 2 1
      apps/emqx_dashboard/test/emqx_swagger_parameter_SUITE.erl
  19. 2 1
      apps/emqx_dashboard/test/emqx_swagger_remote_schema.erl
  20. 2 1
      apps/emqx_dashboard/test/emqx_swagger_requestBody_SUITE.erl
  21. 1 0
      apps/emqx_dashboard/test/emqx_swagger_response_SUITE.erl
  22. 4 1
      apps/emqx_gateway/src/emqx_gateway_api.erl
  23. 4 1
      apps/emqx_gateway/src/emqx_gateway_api_clients.erl
  24. 5 1
      apps/emqx_gateway/src/emqx_gateway_api_listeners.erl
  25. 3 1
      apps/emqx_gateway_jt808/src/emqx_jt808_schema.erl
  26. 1 1
      apps/emqx_gcp_device/src/emqx_gcp_device.app.src
  27. 5 1
      apps/emqx_gcp_device/src/emqx_gcp_device_api.erl
  28. 4 1
      apps/emqx_management/src/emqx_mgmt_api_alarms.erl
  29. 5 1
      apps/emqx_management/src/emqx_mgmt_api_banned.erl
  30. 4 1
      apps/emqx_management/src/emqx_mgmt_api_clients.erl
  31. 3 1
      apps/emqx_management/src/emqx_mgmt_api_data_backup.erl
  32. 4 1
      apps/emqx_management/src/emqx_mgmt_api_metrics.erl
  33. 4 1
      apps/emqx_management/src/emqx_mgmt_api_nodes.erl
  34. 4 1
      apps/emqx_management/src/emqx_mgmt_api_publish.erl
  35. 4 1
      apps/emqx_management/src/emqx_mgmt_api_stats.erl
  36. 5 1
      apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl
  37. 4 1
      apps/emqx_management/src/emqx_mgmt_api_topics.erl
  38. 4 1
      apps/emqx_modules/src/emqx_delayed_api.erl
  39. 4 1
      apps/emqx_modules/src/emqx_topic_metrics_api.erl
  40. 4 1
      apps/emqx_mysql/src/emqx_mysql.erl
  41. 4 1
      apps/emqx_oracle/src/emqx_oracle_schema.erl
  42. 3 1
      apps/emqx_postgresql/src/emqx_postgresql.erl
  43. 4 1
      apps/emqx_prometheus/src/emqx_prometheus_api.erl
  44. 4 1
      apps/emqx_telemetry/src/emqx_telemetry_api.erl

+ 4 - 1
apps/emqx_auth/src/emqx_authn/emqx_authn_api.erl

@@ -42,7 +42,8 @@
 -export([
     api_spec/0,
     paths/0,
-    schema/1
+    schema/1,
+    namespace/0
 ]).
 
 -export([
@@ -95,6 +96,8 @@
 
 -elvis([{elvis_style, god_modules, disable}]).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 5 - 1
apps/emqx_auth/src/emqx_authz/emqx_authz_api_sources.erl

@@ -41,7 +41,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -56,6 +57,9 @@
 
 -define(TAGS, [<<"Authorization">>]).
 
+namespace() ->
+    undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_auth/src/emqx_authz/emqx_authz_schema.erl

@@ -22,7 +22,8 @@
 -export([
     roots/0,
     fields/1,
-    desc/1
+    desc/1,
+    namespace/0
 ]).
 
 -export([
@@ -65,6 +66,8 @@
 
 roots() -> [].
 
+namespace() -> undefined.
+
 fields(?CONF_NS) ->
     emqx_schema:authz_fields() ++ authz_fields();
 fields("metrics_status_fields") ->

+ 4 - 1
apps/emqx_auth_mnesia/src/emqx_authz_api_mnesia.erl

@@ -35,7 +35,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 %% operation funs
@@ -69,6 +70,8 @@
 -define(PUT_MAP_EXAMPLE, in_put_requestBody).
 -define(POST_ARRAY_EXAMPLE, in_post_requestBody).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_bridge/src/schema/emqx_bridge_enterprise.erl

@@ -13,7 +13,8 @@
     examples/1,
     resource_type/1,
     bridge_impl_module/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 api_schemas(Method) ->
@@ -139,6 +140,8 @@ bridge_impl_module(azure_event_hub_producer) ->
 bridge_impl_module(_BridgeType) ->
     undefined.
 
+namespace() -> undefined.
+
 fields(bridges) ->
     [
         {hstreamdb,

+ 3 - 1
apps/emqx_bridge_cassandra/src/emqx_bridge_cassandra_connector.erl

@@ -14,7 +14,7 @@
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 
 %% schema
--export([roots/0, fields/1, desc/1]).
+-export([roots/0, fields/1, desc/1, namespace/0]).
 
 %% callbacks of behaviour emqx_resource
 -export([
@@ -56,6 +56,8 @@
 %%--------------------------------------------------------------------
 %% schema
 
+namespace() -> cassandra.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 1 - 1
apps/emqx_bridge_clickhouse/src/emqx_bridge_clickhouse.app.src

@@ -1,6 +1,6 @@
 {application, emqx_bridge_clickhouse, [
     {description, "EMQX Enterprise ClickHouse Bridge"},
-    {vsn, "0.2.4"},
+    {vsn, "0.2.5"},
     {registered, []},
     {applications, [
         kernel,

+ 4 - 1
apps/emqx_bridge_clickhouse/src/emqx_bridge_clickhouse_connector.erl

@@ -23,7 +23,8 @@
 -export([
     roots/0,
     fields/1,
-    values/1
+    values/1,
+    namespace/0
 ]).
 
 %% callbacks for behaviour emqx_resource
@@ -72,6 +73,8 @@
 %% Configuration and default values
 %%=====================================================================
 
+namespace() -> clickhouse.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 1 - 1
apps/emqx_bridge_dynamo/src/emqx_bridge_dynamo.app.src

@@ -1,6 +1,6 @@
 {application, emqx_bridge_dynamo, [
     {description, "EMQX Enterprise Dynamo Bridge"},
-    {vsn, "0.1.4"},
+    {vsn, "0.1.5"},
     {registered, []},
     {applications, [
         kernel,

+ 4 - 1
apps/emqx_bridge_dynamo/src/emqx_bridge_dynamo_connector.erl

@@ -12,7 +12,7 @@
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 
--export([roots/0, fields/1]).
+-export([roots/0, fields/1, namespace/0]).
 
 %% `emqx_resource' API
 -export([
@@ -32,6 +32,9 @@
 
 %%=====================================================================
 %% Hocon schema
+
+namespace() -> dynamodka.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 2 - 1
apps/emqx_bridge_rocketmq/src/emqx_bridge_rocketmq.erl

@@ -115,7 +115,8 @@ action_values() ->
 
 %% -------------------------------------------------------------------------------------------------
 %% Hocon Schema Definitions
-namespace() -> "bridge_rocketmq".
+
+namespace() -> "rocketmq".
 
 roots() -> [].
 

+ 4 - 1
apps/emqx_bridge_rocketmq/src/emqx_bridge_rocketmq_connector.erl

@@ -12,7 +12,7 @@
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 
--export([roots/0, fields/1]).
+-export([roots/0, fields/1, namespace/0]).
 
 %% `emqx_resource' API
 -export([
@@ -36,6 +36,9 @@
 
 %%=====================================================================
 %% Hocon schema
+
+namespace() -> rocketmq.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 1 - 1
apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.app.src

@@ -1,6 +1,6 @@
 {application, emqx_bridge_sqlserver, [
     {description, "EMQX Enterprise SQL Server Bridge"},
-    {vsn, "0.1.5"},
+    {vsn, "0.1.6"},
     {registered, []},
     {applications, [kernel, stdlib, emqx_resource, odbc]},
     {env, []},

+ 4 - 1
apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver_connector.erl

@@ -24,7 +24,8 @@
 %% Hocon config schema exports
 -export([
     roots/0,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 %% callbacks for behaviour emqx_resource
@@ -132,6 +133,8 @@
 %% Configuration and default values
 %%====================================================================
 
+namespace() -> sqlserver.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 0 - 6
apps/emqx_connector/src/emqx_connector_schema_lib.erl

@@ -44,12 +44,6 @@
     password/0
 ]).
 
--export([roots/0, fields/1]).
-
-roots() -> [].
-
-fields(_) -> [].
-
 ssl_fields() ->
     [
         {ssl, #{

+ 4 - 2
apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl

@@ -15,8 +15,8 @@
 -export([
     api_schemas/1,
     fields/1,
-    %%examples/1
-    schema_modules/0
+    schema_modules/0,
+    namespace/0
 ]).
 
 resource_type(Type) when is_binary(Type) ->
@@ -93,6 +93,8 @@ connector_impl_module(rabbitmq) ->
 connector_impl_module(_ConnectorType) ->
     undefined.
 
+namespace() -> undefined.
+
 fields(connectors) ->
     connector_structs().
 

+ 4 - 1
apps/emqx_dashboard/src/emqx_dashboard_monitor_api.erl

@@ -27,7 +27,8 @@
 -export([
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -35,6 +36,8 @@
     monitor_current/2
 ]).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true, translate_body => true}).
 

+ 2 - 1
apps/emqx_dashboard/test/emqx_swagger_parameter_SUITE.erl

@@ -19,7 +19,7 @@
 -behaviour(hocon_schema).
 
 %% API
--export([paths/0, api_spec/0, schema/1, namespace/0, fields/1]).
+-export([paths/0, api_spec/0, schema/1, roots/0, namespace/0, fields/1]).
 -export([init_per_suite/1, end_per_suite/1]).
 -export([t_in_path/1, t_in_query/1, t_in_mix/1, t_without_in/1, t_ref/1, t_public_ref/1]).
 -export([t_require/1, t_query_enum/1, t_nullable/1, t_method/1, t_api_spec/1]).
@@ -563,6 +563,7 @@ schema("/method/error") ->
     #{operationId => test, bar => #{200 => <<"ok">>}}.
 
 namespace() -> undefined.
+roots() -> [].
 
 fields(page) ->
     [

+ 2 - 1
apps/emqx_dashboard/test/emqx_swagger_remote_schema.erl

@@ -17,9 +17,10 @@
 
 -include_lib("typerefl/include/types.hrl").
 
--export([roots/0, fields/1]).
+-export([namespace/0, roots/0, fields/1]).
 -import(hoconsc, [mk/2]).
 roots() -> ["root"].
+namespace() -> undefined.
 
 fields("root") ->
     [

+ 2 - 1
apps/emqx_dashboard/test/emqx_swagger_requestBody_SUITE.erl

@@ -813,7 +813,8 @@ to_schema(Body) ->
         post => #{requestBody => Body, responses => #{200 => <<"ok">>}}
     }.
 
-%% Don't warning hocon callback namespace/0 undef.
+roots() -> [].
+
 namespace() -> atom_to_list(?MODULE).
 
 fields(good_ref) ->

+ 1 - 0
apps/emqx_dashboard/test/emqx_swagger_response_SUITE.erl

@@ -680,6 +680,7 @@ to_schema(Object) ->
         post => #{responses => #{200 => Object, 201 => Object}}
     }.
 
+rotos() -> [].
 namespace() -> undefined.
 
 fields(good_ref) ->

+ 4 - 1
apps/emqx_gateway/src/emqx_gateway_api.erl

@@ -36,7 +36,8 @@
 -export([
     api_spec/0,
     paths/0,
-    schema/1
+    schema/1,
+    namespace/0
 ]).
 
 -export([
@@ -59,6 +60,8 @@
 %% minirest behaviour callbacks
 %%--------------------------------------------------------------------
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_gateway/src/emqx_gateway_api_clients.erl

@@ -42,7 +42,8 @@
 
 -export([
     roots/0,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 %% http handlers
@@ -775,6 +776,8 @@ schema_client() ->
         examples_client()
     ).
 
+namespace() -> undefined.
+
 roots() ->
     [
         stomp_client,

+ 5 - 1
apps/emqx_gateway/src/emqx_gateway_api_listeners.erl

@@ -45,7 +45,8 @@
 
 -export([
     roots/0,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 %% http handlers
@@ -651,6 +652,9 @@ params_paging_in_qs() ->
 %%--------------------------------------------------------------------
 %% schemas
 
+namespace() ->
+    undefined.
+
 roots() ->
     [listener].
 

+ 3 - 1
apps/emqx_gateway_jt808/src/emqx_jt808_schema.erl

@@ -9,10 +9,12 @@
 -include_lib("typerefl/include/types.hrl").
 
 -behaviour(hocon_schema).
--export([namespace/0, fields/1, desc/1]).
+-export([roots/0, namespace/0, fields/1, desc/1]).
 
 -define(NOT_EMPTY(MSG), emqx_resource_validator:not_empty(MSG)).
 
+roots() -> [].
+
 namespace() -> gateway.
 
 fields(jt808) ->

+ 1 - 1
apps/emqx_gcp_device/src/emqx_gcp_device.app.src

@@ -1,6 +1,6 @@
 {application, emqx_gcp_device, [
     {description, "Application simplifying migration from GCP IoT Core"},
-    {vsn, "0.1.3"},
+    {vsn, "0.1.4"},
     {registered, []},
     {mod, {emqx_gcp_device_app, []}},
     {applications, [

+ 5 - 1
apps/emqx_gcp_device/src/emqx_gcp_device_api.erl

@@ -22,7 +22,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -62,6 +63,9 @@
 %% `minirest' and `minirest_trails' API
 %%-------------------------------------------------------------------------------------------------
 
+namespace() ->
+    undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_alarms.erl

@@ -22,7 +22,7 @@
 -include_lib("emqx/include/emqx.hrl").
 -include_lib("typerefl/include/types.hrl").
 
--export([api_spec/0, paths/0, schema/1, fields/1]).
+-export([api_spec/0, paths/0, schema/1, fields/1, namespace/0]).
 
 -export([alarms/2, format_alarm/2]).
 
@@ -31,6 +31,9 @@
 %% internal export (for query)
 -export([qs2ms/2]).
 
+namespace() ->
+    undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 5 - 1
apps/emqx_management/src/emqx_mgmt_api_banned.erl

@@ -28,7 +28,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([format/1]).
@@ -44,6 +45,9 @@
 
 -define(FORMAT_FUN, {?MODULE, format}).
 
+namespace() ->
+    undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true, translate_body => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_clients.erl

@@ -32,7 +32,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -83,6 +84,8 @@
     message => <<"Client ID not found">>
 }).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true, translate_body => true}).
 

+ 3 - 1
apps/emqx_management/src/emqx_mgmt_api_data_backup.erl

@@ -21,7 +21,7 @@
 -include_lib("emqx/include/logger.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 
--export([api_spec/0, paths/0, schema/1, fields/1]).
+-export([api_spec/0, paths/0, schema/1, fields/1, namespace/0]).
 
 -export([
     data_export/2,
@@ -48,6 +48,8 @@
         })}
 ).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_metrics.erl

@@ -27,7 +27,8 @@
 -export([
     api_spec/0,
     paths/0,
-    schema/1
+    schema/1,
+    namespace/0
 ]).
 
 -export([
@@ -42,6 +43,8 @@
 %% minirest behaviour callbacks
 %%--------------------------------------------------------------------
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_nodes.erl

@@ -30,7 +30,8 @@
     api_spec/0,
     schema/1,
     paths/0,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 %% API callbacks
@@ -45,6 +46,8 @@
 %% API spec funcs
 %%--------------------------------------------------------------------
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_publish.erl

@@ -32,7 +32,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -40,6 +41,8 @@
     publish_batch/2
 ]).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true, translate_body => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_stats.erl

@@ -34,11 +34,14 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([list/2]).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 5 - 1
apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl

@@ -28,7 +28,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([subscriptions/2]).
@@ -48,6 +49,9 @@
     {<<"match_topic">>, binary}
 ]).
 
+namespace() ->
+    undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_management/src/emqx_mgmt_api_topics.erl

@@ -28,7 +28,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -41,6 +42,8 @@
 -define(TOPICS_QUERY_SCHEMA, [{<<"topic">>, binary}, {<<"node">>, atom}]).
 -define(TAGS, [<<"Topics">>]).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true, translate_body => true}).
 

+ 4 - 1
apps/emqx_modules/src/emqx_delayed_api.erl

@@ -34,7 +34,8 @@
 -export([
     paths/0,
     fields/1,
-    schema/1
+    schema/1,
+    namespace/0
 ]).
 
 %% for rpc
@@ -55,6 +56,8 @@
 -define(INVALID_TOPIC, 'INVALID_TOPIC_NAME').
 -define(MESSAGE_NOT_FOUND, 'MESSAGE_NOT_FOUND').
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_modules/src/emqx_topic_metrics_api.erl

@@ -47,7 +47,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -define(EXCEED_LIMIT, 'EXCEED_LIMIT').
@@ -55,6 +56,8 @@
 -define(TOPIC_NOT_FOUND, 'TOPIC_NOT_FOUND').
 -define(BAD_REQUEST, 'BAD_REQUEST').
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_mysql/src/emqx_mysql.erl

@@ -44,7 +44,7 @@
     unprepare_sql/1
 ]).
 
--export([roots/0, fields/1]).
+-export([roots/0, fields/1, namespace/0]).
 
 -export([do_get_status/1]).
 
@@ -63,6 +63,9 @@
 -export_type([state/0]).
 %%=====================================================================
 %% Hocon schema
+
+namespace() -> mysql.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 4 - 1
apps/emqx_oracle/src/emqx_oracle_schema.erl

@@ -12,9 +12,12 @@
 %% Hocon config schema exports
 -export([
     roots/0,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
+namespace() -> oracle.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?REF_MODULE, config)}}].
 

+ 3 - 1
apps/emqx_postgresql/src/emqx_postgresql.erl

@@ -23,7 +23,7 @@
 -include_lib("epgsql/include/epgsql.hrl").
 -include_lib("snabbkaffe/include/snabbkaffe.hrl").
 
--export([roots/0, fields/1]).
+-export([roots/0, fields/1, namespace/0]).
 
 -behaviour(emqx_resource).
 
@@ -71,6 +71,8 @@
 
 %%=====================================================================
 
+namespace() -> postgres.
+
 roots() ->
     [{config, #{type => hoconsc:ref(?MODULE, config)}}].
 

+ 4 - 1
apps/emqx_prometheus/src/emqx_prometheus_api.erl

@@ -34,7 +34,8 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -export([
@@ -50,6 +51,8 @@
 -define(IS_TRUE(Val), ((Val =:= true) orelse (Val =:= <<"true">>))).
 -define(IS_FALSE(Val), ((Val =:= false) orelse (Val =:= <<"false">>))).
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
 

+ 4 - 1
apps/emqx_telemetry/src/emqx_telemetry_api.erl

@@ -32,12 +32,15 @@
     api_spec/0,
     paths/0,
     schema/1,
-    fields/1
+    fields/1,
+    namespace/0
 ]).
 
 -define(BAD_REQUEST, 'BAD_REQUEST').
 -define(NOT_FOUND, 'NOT_FOUND').
 
+namespace() -> undefined.
+
 api_spec() ->
     emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).