82 changed files with 5484 additions and 2909 deletions
@ -0,0 +1,110 @@ |
|||||
|
-- |
||||
|
-- Copyright © 2016-2018 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 MATERIALIZED VIEW IF EXISTS thingsboard.entity_view_by_tenant_and_name; |
||||
|
DROP MATERIALIZED VIEW IF EXISTS thingsboard.entity_view_by_tenant_and_search_text; |
||||
|
DROP MATERIALIZED VIEW IF EXISTS thingsboard.entity_view_by_tenant_and_customer; |
||||
|
DROP MATERIALIZED VIEW IF EXISTS thingsboard.entity_view_by_tenant_and_entity_id; |
||||
|
|
||||
|
DROP TABLE IF EXISTS thingsboard.entity_views; |
||||
|
|
||||
|
CREATE TABLE IF NOT EXISTS thingsboard.entity_view ( |
||||
|
id timeuuid, |
||||
|
entity_id timeuuid, |
||||
|
entity_type text, |
||||
|
tenant_id timeuuid, |
||||
|
customer_id timeuuid, |
||||
|
name text, |
||||
|
type text, |
||||
|
keys text, |
||||
|
start_ts bigint, |
||||
|
end_ts bigint, |
||||
|
search_text text, |
||||
|
additional_info text, |
||||
|
PRIMARY KEY (id, entity_id, tenant_id, customer_id, type) |
||||
|
); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_name AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND name IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, name, id, customer_id, entity_id, type) |
||||
|
WITH CLUSTERING ORDER BY (name ASC, id DESC, customer_id DESC); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_search_text AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND search_text IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, search_text, id, customer_id, entity_id, type) |
||||
|
WITH CLUSTERING ORDER BY (search_text ASC, id DESC, customer_id DESC); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_by_type_and_search_text AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND search_text IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, type, search_text, id, customer_id, entity_id) |
||||
|
WITH CLUSTERING ORDER BY (type ASC, search_text ASC, id DESC, customer_id DESC); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_customer AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND search_text IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, customer_id, search_text, id, entity_id, type) |
||||
|
WITH CLUSTERING ORDER BY (customer_id DESC, search_text ASC, id DESC); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_customer_and_type AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND search_text IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, type, customer_id, search_text, id, entity_id) |
||||
|
WITH CLUSTERING ORDER BY (type ASC, customer_id DESC, search_text ASC, id DESC); |
||||
|
|
||||
|
CREATE MATERIALIZED VIEW IF NOT EXISTS thingsboard.entity_view_by_tenant_and_entity_id AS |
||||
|
SELECT * |
||||
|
from thingsboard.entity_view |
||||
|
WHERE tenant_id IS NOT NULL |
||||
|
AND customer_id IS NOT NULL |
||||
|
AND entity_id IS NOT NULL |
||||
|
AND type IS NOT NULL |
||||
|
AND search_text IS NOT NULL |
||||
|
AND id IS NOT NULL |
||||
|
PRIMARY KEY (tenant_id, entity_id, customer_id, search_text, id, type) |
||||
|
WITH CLUSTERING ORDER BY (entity_id DESC, customer_id DESC, search_text ASC, id DESC); |
||||
@ -0,0 +1,32 @@ |
|||||
|
-- |
||||
|
-- Copyright © 2016-2018 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 TABLE IF EXISTS entity_views; |
||||
|
|
||||
|
CREATE TABLE IF NOT EXISTS entity_view ( |
||||
|
id varchar(31) NOT NULL CONSTRAINT entity_view_pkey PRIMARY KEY, |
||||
|
entity_id varchar(31), |
||||
|
entity_type varchar(255), |
||||
|
tenant_id varchar(31), |
||||
|
customer_id varchar(31), |
||||
|
type varchar(255), |
||||
|
name varchar(255), |
||||
|
keys varchar(255), |
||||
|
start_ts bigint, |
||||
|
end_ts bigint, |
||||
|
search_text varchar(255), |
||||
|
additional_info varchar |
||||
|
); |
||||
File diff suppressed because one or more lines are too long
@ -1,5 +1,10 @@ |
|||||
|
|
||||
DOCKER_REPO=local-maven-build |
DOCKER_REPO=local-maven-build |
||||
|
|
||||
|
JS_EXECUTOR_DOCKER_NAME=tb-js-executor |
||||
|
TB_NODE_DOCKER_NAME=tb-node |
||||
|
WEB_UI_DOCKER_NAME=tb-web-ui |
||||
|
|
||||
TB_VERSION=2.2.0-SNAPSHOT |
TB_VERSION=2.2.0-SNAPSHOT |
||||
|
|
||||
KAFKA_TOPICS=js.eval.requests:100:1 |
KAFKA_TOPICS=js.eval.requests:100:1 |
||||
|
|||||
@ -0,0 +1,55 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2018 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.session; |
||||
|
|
||||
|
import java.util.regex.Pattern; |
||||
|
|
||||
|
public class MqttTopicMatcher { |
||||
|
|
||||
|
private final String topic; |
||||
|
private final Pattern topicRegex; |
||||
|
|
||||
|
public MqttTopicMatcher(String topic) { |
||||
|
if(topic == null){ |
||||
|
throw new NullPointerException("topic"); |
||||
|
} |
||||
|
this.topic = topic; |
||||
|
this.topicRegex = Pattern.compile(topic.replace("+", "[^/]+").replace("#", ".+") + "$"); |
||||
|
} |
||||
|
|
||||
|
public String getTopic() { |
||||
|
return topic; |
||||
|
} |
||||
|
|
||||
|
public boolean matches(String topic){ |
||||
|
return this.topicRegex.matcher(topic).matches(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean equals(Object o) { |
||||
|
if (this == o) return true; |
||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||
|
|
||||
|
MqttTopicMatcher that = (MqttTopicMatcher) o; |
||||
|
|
||||
|
return topic.equals(that.topic); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public int hashCode() { |
||||
|
return topic.hashCode(); |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
Loading…
Reference in new issue