committed by
GitHub
19 changed files with 338 additions and 304 deletions
@ -0,0 +1,31 @@ |
|||
/** |
|||
* Copyright © 2016-2025 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.transport.mqtt; |
|||
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
|||
|
|||
import java.lang.annotation.Inherited; |
|||
import java.lang.annotation.Retention; |
|||
import java.lang.annotation.RetentionPolicy; |
|||
|
|||
/** |
|||
* Same as @TbMqttTransportComponent with additional condition by `transport.mqtt.ssl.enabled == true` |
|||
*/ |
|||
|
|||
@Inherited |
|||
@Retention(RetentionPolicy.RUNTIME) |
|||
@ConditionalOnExpression("'${service.type:null}'=='tb-transport' || ('${service.type:null}'=='monolith' && '${transport.api_enabled:true}'=='true' && '${transport.mqtt.enabled:true}'=='true' && '${transport.mqtt.ssl.enabled:false}'=='true')") |
|||
public @interface TbMqttSslTransportComponent {} |
|||
@ -0,0 +1,106 @@ |
|||
-- |
|||
-- Copyright © 2016-2025 The Thingsboard Authors |
|||
-- |
|||
-- Licensed under the Apache License, Version 2.0 (the "License"); |
|||
-- you may not use this file except in compliance with the License. |
|||
-- You may obtain a copy of the License at |
|||
-- |
|||
-- http://www.apache.org/licenses/LICENSE-2.0 |
|||
-- |
|||
-- Unless required by applicable law or agreed to in writing, software |
|||
-- distributed under the License is distributed on an "AS IS" BASIS, |
|||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
-- See the License for the specific language governing permissions and |
|||
-- limitations under the License. |
|||
-- |
|||
|
|||
DROP VIEW IF EXISTS device_info_active_attribute_view CASCADE; |
|||
CREATE OR REPLACE VIEW device_info_active_attribute_view AS |
|||
SELECT d.* |
|||
, c.title as customer_title |
|||
, COALESCE((c.additional_info::json->>'isPublic')::bool, FALSE) as customer_is_public |
|||
, d.type as device_profile_name |
|||
, COALESCE(da.bool_v, FALSE) as active |
|||
FROM device d |
|||
LEFT JOIN customer c ON c.id = d.customer_id |
|||
LEFT JOIN attribute_kv da ON da.entity_id = d.id AND da.attribute_type = 2 AND da.attribute_key = (select key_id from key_dictionary where key = 'active'); |
|||
|
|||
DROP VIEW IF EXISTS device_info_active_ts_view CASCADE; |
|||
CREATE OR REPLACE VIEW device_info_active_ts_view AS |
|||
SELECT d.* |
|||
, c.title as customer_title |
|||
, COALESCE((c.additional_info::json->>'isPublic')::bool, FALSE) as customer_is_public |
|||
, d.type as device_profile_name |
|||
, COALESCE(dt.bool_v, FALSE) as active |
|||
FROM device d |
|||
LEFT JOIN customer c ON c.id = d.customer_id |
|||
LEFT JOIN ts_kv_latest dt ON dt.entity_id = d.id and dt.key = (select key_id from key_dictionary where key = 'active'); |
|||
|
|||
DROP VIEW IF EXISTS device_info_view CASCADE; |
|||
CREATE OR REPLACE VIEW device_info_view AS SELECT * FROM device_info_active_attribute_view; |
|||
|
|||
DROP VIEW IF EXISTS alarm_info CASCADE; |
|||
CREATE VIEW alarm_info AS |
|||
SELECT a.*, |
|||
(CASE WHEN a.acknowledged AND a.cleared THEN 'CLEARED_ACK' |
|||
WHEN NOT a.acknowledged AND a.cleared THEN 'CLEARED_UNACK' |
|||
WHEN a.acknowledged AND NOT a.cleared THEN 'ACTIVE_ACK' |
|||
WHEN NOT a.acknowledged AND NOT a.cleared THEN 'ACTIVE_UNACK' END) as status, |
|||
COALESCE(CASE WHEN a.originator_type = 0 THEN (select title from tenant where id = a.originator_id) |
|||
WHEN a.originator_type = 1 THEN (select title from customer where id = a.originator_id) |
|||
WHEN a.originator_type = 2 THEN (select email from tb_user where id = a.originator_id) |
|||
WHEN a.originator_type = 3 THEN (select title from dashboard where id = a.originator_id) |
|||
WHEN a.originator_type = 4 THEN (select name from asset where id = a.originator_id) |
|||
WHEN a.originator_type = 5 THEN (select name from device where id = a.originator_id) |
|||
WHEN a.originator_type = 9 THEN (select name from entity_view where id = a.originator_id) |
|||
WHEN a.originator_type = 13 THEN (select name from device_profile where id = a.originator_id) |
|||
WHEN a.originator_type = 14 THEN (select name from asset_profile where id = a.originator_id) |
|||
WHEN a.originator_type = 18 THEN (select name from edge where id = a.originator_id) END |
|||
, 'Deleted') originator_name, |
|||
COALESCE(CASE WHEN a.originator_type = 0 THEN (select title from tenant where id = a.originator_id) |
|||
WHEN a.originator_type = 1 THEN (select COALESCE(NULLIF(title, ''), email) from customer where id = a.originator_id) |
|||
WHEN a.originator_type = 2 THEN (select email from tb_user where id = a.originator_id) |
|||
WHEN a.originator_type = 3 THEN (select title from dashboard where id = a.originator_id) |
|||
WHEN a.originator_type = 4 THEN (select COALESCE(NULLIF(label, ''), name) from asset where id = a.originator_id) |
|||
WHEN a.originator_type = 5 THEN (select COALESCE(NULLIF(label, ''), name) from device where id = a.originator_id) |
|||
WHEN a.originator_type = 9 THEN (select name from entity_view where id = a.originator_id) |
|||
WHEN a.originator_type = 13 THEN (select name from device_profile where id = a.originator_id) |
|||
WHEN a.originator_type = 14 THEN (select name from asset_profile where id = a.originator_id) |
|||
WHEN a.originator_type = 18 THEN (select COALESCE(NULLIF(label, ''), name) from edge where id = a.originator_id) END |
|||
, 'Deleted') as originator_label, |
|||
u.first_name as assignee_first_name, u.last_name as assignee_last_name, u.email as assignee_email |
|||
FROM alarm a |
|||
LEFT JOIN tb_user u ON u.id = a.assignee_id; |
|||
|
|||
DROP VIEW IF EXISTS edge_active_attribute_view CASCADE; |
|||
CREATE OR REPLACE VIEW edge_active_attribute_view AS |
|||
SELECT ee.id |
|||
, ee.created_time |
|||
, ee.additional_info |
|||
, ee.customer_id |
|||
, ee.root_rule_chain_id |
|||
, ee.type |
|||
, ee.name |
|||
, ee.label |
|||
, ee.routing_key |
|||
, ee.secret |
|||
, ee.tenant_id |
|||
, ee.version |
|||
FROM edge ee |
|||
JOIN attribute_kv ON ee.id = attribute_kv.entity_id |
|||
JOIN key_dictionary ON attribute_kv.attribute_key = key_dictionary.key_id |
|||
WHERE attribute_kv.bool_v = true AND key_dictionary.key = 'active' |
|||
ORDER BY ee.id; |
|||
|
|||
DROP VIEW IF EXISTS widget_type_info_view CASCADE; |
|||
CREATE OR REPLACE VIEW widget_type_info_view AS |
|||
SELECT t.*, |
|||
COALESCE((t.descriptor::json->>'type')::text, '') as widget_type, |
|||
array_to_json(ARRAY( |
|||
SELECT json_build_object('id', wb.widgets_bundle_id, 'name', b.title) |
|||
FROM widgets_bundle_widget wb |
|||
JOIN widgets_bundle b ON wb.widgets_bundle_id = b.id |
|||
WHERE wb.widget_type_id = t.id |
|||
ORDER BY b.title |
|||
)) AS bundles |
|||
FROM widget_type t; |
|||
Loading…
Reference in new issue