feat(bridges): add timescale && matrix bridges
This commit is contained in:
parent
6f5057b9dd
commit
e08d6dbc9b
|
@ -26,7 +26,9 @@ api_schemas(Method) ->
|
|||
ref(emqx_ee_bridge_influxdb, Method ++ "_api_v2"),
|
||||
ref(emqx_ee_bridge_redis, Method ++ "_single"),
|
||||
ref(emqx_ee_bridge_redis, Method ++ "_sentinel"),
|
||||
ref(emqx_ee_bridge_redis, Method ++ "_cluster")
|
||||
ref(emqx_ee_bridge_redis, Method ++ "_cluster"),
|
||||
ref(emqx_ee_bridge_timescale, Method),
|
||||
ref(emqx_ee_bridge_matrix, Method)
|
||||
].
|
||||
|
||||
schema_modules() ->
|
||||
|
@ -38,7 +40,9 @@ schema_modules() ->
|
|||
emqx_ee_bridge_mongodb,
|
||||
emqx_ee_bridge_mysql,
|
||||
emqx_ee_bridge_redis,
|
||||
emqx_ee_bridge_pgsql
|
||||
emqx_ee_bridge_pgsql,
|
||||
emqx_ee_bridge_timescale,
|
||||
emqx_ee_bridge_matrix
|
||||
].
|
||||
|
||||
examples(Method) ->
|
||||
|
@ -66,7 +70,9 @@ resource_type(influxdb_api_v2) -> emqx_ee_connector_influxdb;
|
|||
resource_type(redis_single) -> emqx_ee_connector_redis;
|
||||
resource_type(redis_sentinel) -> emqx_ee_connector_redis;
|
||||
resource_type(redis_cluster) -> emqx_ee_connector_redis;
|
||||
resource_type(pgsql) -> emqx_connector_pgsql.
|
||||
resource_type(pgsql) -> emqx_connector_pgsql;
|
||||
resource_type(timescale) -> emqx_connector_pgsql;
|
||||
resource_type(matrix) -> emqx_connector_pgsql.
|
||||
|
||||
fields(bridges) ->
|
||||
[
|
||||
|
@ -101,16 +107,8 @@ fields(bridges) ->
|
|||
desc => <<"MySQL Bridge Config">>,
|
||||
required => false
|
||||
}
|
||||
)},
|
||||
{pgsql,
|
||||
mk(
|
||||
hoconsc:map(name, ref(emqx_ee_bridge_pgsql, "config")),
|
||||
#{
|
||||
desc => <<"PostgreSQL Bridge Config">>,
|
||||
required => false
|
||||
}
|
||||
)}
|
||||
] ++ mongodb_structs() ++ influxdb_structs() ++ redis_structs().
|
||||
] ++ mongodb_structs() ++ influxdb_structs() ++ redis_structs() ++ pgsql_structs().
|
||||
|
||||
mongodb_structs() ->
|
||||
[
|
||||
|
@ -157,3 +155,20 @@ redis_structs() ->
|
|||
redis_cluster
|
||||
]
|
||||
].
|
||||
|
||||
pgsql_structs() ->
|
||||
[
|
||||
{Type,
|
||||
mk(
|
||||
hoconsc:map(name, ref(emqx_ee_bridge_pgsql, "config")),
|
||||
#{
|
||||
desc => <<Name/binary, " Bridge Config">>,
|
||||
required => false
|
||||
}
|
||||
)}
|
||||
|| {Type, Name} <- [
|
||||
{pgsql, <<"PostgreSQL">>},
|
||||
{timescale, <<"Timescale">>},
|
||||
{matrix, <<"Matrix">>}
|
||||
]
|
||||
].
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
%%--------------------------------------------------------------------
|
||||
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||
%%--------------------------------------------------------------------
|
||||
-module(emqx_ee_bridge_matrix).
|
||||
|
||||
-export([
|
||||
conn_bridge_examples/1
|
||||
]).
|
||||
|
||||
-export([
|
||||
namespace/0,
|
||||
roots/0,
|
||||
fields/1,
|
||||
desc/1
|
||||
]).
|
||||
|
||||
%% -------------------------------------------------------------------------------------------------
|
||||
%% api
|
||||
|
||||
conn_bridge_examples(Method) ->
|
||||
[
|
||||
#{
|
||||
<<"matrix">> => #{
|
||||
summary => <<"Matrix Bridge">>,
|
||||
value => emqx_ee_bridge_pgsql:values(Method, matrix)
|
||||
}
|
||||
}
|
||||
].
|
||||
|
||||
%% -------------------------------------------------------------------------------------------------
|
||||
%% Hocon Schema Definitions
|
||||
namespace() -> "bridge_matrix".
|
||||
|
||||
roots() -> [].
|
||||
|
||||
fields("post") ->
|
||||
emqx_ee_bridge_pgsql:fields("post", matrix);
|
||||
fields(Method) ->
|
||||
emqx_ee_bridge_pgsql:fields(Method).
|
||||
|
||||
desc(_) ->
|
||||
undefined.
|
|
@ -11,7 +11,9 @@
|
|||
-import(hoconsc, [mk/2, enum/1, ref/2]).
|
||||
|
||||
-export([
|
||||
conn_bridge_examples/1
|
||||
conn_bridge_examples/1,
|
||||
values/2,
|
||||
fields/2
|
||||
]).
|
||||
|
||||
-export([
|
||||
|
@ -34,17 +36,17 @@ conn_bridge_examples(Method) ->
|
|||
#{
|
||||
<<"pgsql">> => #{
|
||||
summary => <<"PostgreSQL Bridge">>,
|
||||
value => values(Method)
|
||||
value => values(Method, pgsql)
|
||||
}
|
||||
}
|
||||
].
|
||||
|
||||
values(get) ->
|
||||
maps:merge(values(post), ?METRICS_EXAMPLE);
|
||||
values(post) ->
|
||||
values(get, Type) ->
|
||||
maps:merge(values(post, Type), ?METRICS_EXAMPLE);
|
||||
values(post, Type) ->
|
||||
#{
|
||||
enable => true,
|
||||
type => pgsql,
|
||||
type => Type,
|
||||
name => <<"foo">>,
|
||||
server => <<"127.0.0.1:5432">>,
|
||||
database => <<"mqtt">>,
|
||||
|
@ -64,8 +66,8 @@ values(post) ->
|
|||
max_queue_bytes => ?DEFAULT_QUEUE_SIZE
|
||||
}
|
||||
};
|
||||
values(put) ->
|
||||
values(post).
|
||||
values(put, Type) ->
|
||||
values(post, Type).
|
||||
|
||||
%% -------------------------------------------------------------------------------------------------
|
||||
%% Hocon Schema Definitions
|
||||
|
@ -96,17 +98,20 @@ fields("config") ->
|
|||
}
|
||||
)}
|
||||
] ++
|
||||
emqx_connector_mysql:fields(config) -- emqx_connector_schema_lib:prepare_statement_fields();
|
||||
emqx_connector_pgsql:fields(config) -- emqx_connector_schema_lib:prepare_statement_fields();
|
||||
fields("creation_opts") ->
|
||||
Opts = emqx_resource_schema:fields("creation_opts"),
|
||||
[O || {Field, _} = O <- Opts, not is_hidden_opts(Field)];
|
||||
fields("post") ->
|
||||
[type_field(), name_field() | fields("config")];
|
||||
fields("post", pgsql);
|
||||
fields("put") ->
|
||||
fields("config");
|
||||
fields("get") ->
|
||||
emqx_bridge_schema:metrics_status_fields() ++ fields("post").
|
||||
|
||||
fields("post", Type) ->
|
||||
[type_field(Type), name_field() | fields("config")].
|
||||
|
||||
desc("config") ->
|
||||
?DESC("desc_config");
|
||||
desc(Method) when Method =:= "get"; Method =:= "put"; Method =:= "post" ->
|
||||
|
@ -123,8 +128,8 @@ is_hidden_opts(Field) ->
|
|||
async_inflight_window
|
||||
]).
|
||||
|
||||
type_field() ->
|
||||
{type, mk(enum([mysql]), #{required => true, desc => ?DESC("desc_type")})}.
|
||||
type_field(Type) ->
|
||||
{type, mk(enum([Type]), #{required => true, desc => ?DESC("desc_type")})}.
|
||||
|
||||
name_field() ->
|
||||
{name, mk(binary(), #{required => true, desc => ?DESC("desc_name")})}.
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
%%--------------------------------------------------------------------
|
||||
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||
%%--------------------------------------------------------------------
|
||||
-module(emqx_ee_bridge_timescale).
|
||||
|
||||
-export([
|
||||
conn_bridge_examples/1
|
||||
]).
|
||||
|
||||
-export([
|
||||
namespace/0,
|
||||
roots/0,
|
||||
fields/1,
|
||||
desc/1
|
||||
]).
|
||||
|
||||
%% -------------------------------------------------------------------------------------------------
|
||||
%% api
|
||||
|
||||
conn_bridge_examples(Method) ->
|
||||
[
|
||||
#{
|
||||
<<"timescale">> => #{
|
||||
summary => <<"Timescale Bridge">>,
|
||||
value => emqx_ee_bridge_pgsql:values(Method, timescale)
|
||||
}
|
||||
}
|
||||
].
|
||||
|
||||
%% -------------------------------------------------------------------------------------------------
|
||||
%% Hocon Schema Definitions
|
||||
namespace() -> "bridge_timescale".
|
||||
|
||||
roots() -> [].
|
||||
|
||||
fields("post") ->
|
||||
emqx_ee_bridge_pgsql:fields("post", timescale);
|
||||
fields(Method) ->
|
||||
emqx_ee_bridge_pgsql:fields(Method).
|
||||
|
||||
desc(_) ->
|
||||
undefined.
|
Loading…
Reference in New Issue