2017-05-31 18:55:59 +03:00
--
2021-01-11 13:42:16 +02:00
-- Copyright © 2016-2021 The Thingsboard Authors
2017-05-31 18:55:59 +03:00
--
-- 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.
--
2017-06-01 16:50:37 +03:00
2020-08-03 11:09:13 +03:00
CREATE TABLE IF NOT EXISTS tb_schema_settings
(
schema_version bigint NOT NULL ,
CONSTRAINT tb_schema_settings_pkey PRIMARY KEY ( schema_version )
) ;
2020-08-03 12:25:33 +03:00
CREATE OR REPLACE PROCEDURE insert_tb_schema_settings ( )
LANGUAGE plpgsql AS
$ $
BEGIN
IF ( SELECT COUNT ( * ) FROM tb_schema_settings ) = 0 THEN
2021-04-08 10:30:30 +03:00
INSERT INTO tb_schema_settings ( schema_version ) VALUES ( 3003000 ) ;
2020-08-03 12:25:33 +03:00
END IF ;
END ;
$ $ ;
call insert_tb_schema_settings ( ) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS admin_settings (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT admin_settings_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-01 20:39:00 +03:00
json_value varchar ,
2017-07-17 17:32:32 +03:00
key varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS alarm (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT alarm_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-05-31 18:55:59 +03:00
ack_ts bigint ,
clear_ts bigint ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-05-31 18:55:59 +03:00
end_ts bigint ,
2020-06-22 11:10:28 +03:00
originator_id uuid ,
2017-05-31 18:55:59 +03:00
originator_type integer ,
propagate boolean ,
2017-07-17 17:32:32 +03:00
severity varchar ( 255 ) ,
2017-05-31 18:55:59 +03:00
start_ts bigint ,
2017-07-17 17:32:32 +03:00
status varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2021-05-07 16:05:54 +03:00
customer_id uuid ,
2019-12-08 23:52:29 +02:00
propagate_relation_types varchar ,
2017-07-17 17:32:32 +03:00
type varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS asset (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT asset_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2020-06-22 11:10:28 +03:00
customer_id uuid ,
2017-07-17 17:32:32 +03:00
name varchar ( 255 ) ,
2019-10-17 18:25:05 +03:00
label varchar ( 255 ) ,
2017-07-17 17:32:32 +03:00
search_text varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2019-11-22 15:47:54 +02:00
type varchar ( 255 ) ,
CONSTRAINT asset_name_unq_key UNIQUE ( tenant_id , name )
2017-05-31 18:55:59 +03:00
) ;
2018-02-09 17:17:44 +02:00
CREATE TABLE IF NOT EXISTS audit_log (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT audit_log_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
tenant_id uuid ,
customer_id uuid ,
entity_id uuid ,
2018-02-09 17:17:44 +02:00
entity_type varchar ( 255 ) ,
entity_name varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
user_id uuid ,
2018-02-09 17:17:44 +02:00
user_name varchar ( 255 ) ,
action_type varchar ( 255 ) ,
2018-02-21 20:05:03 +02:00
action_data varchar ( 1000000 ) ,
2018-02-09 17:17:44 +02:00
action_status varchar ( 255 ) ,
2018-02-21 20:05:03 +02:00
action_failure_details varchar ( 1000000 )
2018-02-09 17:17:44 +02:00
) ;
2017-06-13 16:29:40 +03:00
CREATE TABLE IF NOT EXISTS attribute_kv (
2017-07-17 17:32:32 +03:00
entity_type varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
entity_id uuid ,
2017-07-17 17:32:32 +03:00
attribute_type varchar ( 255 ) ,
attribute_key varchar ( 255 ) ,
2017-06-09 19:52:26 +03:00
bool_v boolean ,
2017-08-17 16:38:13 +03:00
str_v varchar ( 10000000 ) ,
2017-06-09 19:52:26 +03:00
long_v bigint ,
dbl_v double precision ,
2020-02-14 19:18:18 +02:00
json_v json ,
2017-06-09 19:52:26 +03:00
last_update_ts bigint ,
2018-12-20 14:53:16 +01:00
CONSTRAINT attribute_kv_pkey PRIMARY KEY ( entity_type , entity_id , attribute_type , attribute_key )
2017-06-09 19:52:26 +03:00
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS component_descriptor (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT component_descriptor_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-17 17:32:32 +03:00
actions varchar ( 255 ) ,
2018-10-30 13:32:55 +02:00
clazz varchar UNIQUE ,
2017-07-01 20:39:00 +03:00
configuration_descriptor varchar ,
2017-07-17 17:32:32 +03:00
name varchar ( 255 ) ,
scope varchar ( 255 ) ,
search_text varchar ( 255 ) ,
type varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS customer (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT customer_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
address varchar ,
address2 varchar ,
city varchar ( 255 ) ,
country varchar ( 255 ) ,
email varchar ( 255 ) ,
phone varchar ( 255 ) ,
search_text varchar ( 255 ) ,
state varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2017-07-17 17:32:32 +03:00
title varchar ( 255 ) ,
zip varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS dashboard (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT dashboard_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2020-12-10 16:16:51 +02:00
configuration varchar ,
2018-02-27 18:30:23 +02:00
assigned_customers varchar ( 1000000 ) ,
2017-07-17 17:32:32 +03:00
search_text varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2021-05-06 17:01:46 +03:00
title varchar ( 255 ) ,
2021-07-22 15:44:40 +03:00
mobile_hide boolean DEFAULT false ,
mobile_order int ,
2021-05-06 17:01:46 +03:00
image varchar ( 1000000 )
2017-05-31 18:55:59 +03:00
) ;
2020-09-04 12:53:22 +03:00
CREATE TABLE IF NOT EXISTS rule_chain (
id uuid NOT NULL CONSTRAINT rule_chain_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
additional_info varchar ,
configuration varchar ( 10000000 ) ,
name varchar ( 255 ) ,
2020-10-12 12:00:54 +03:00
type varchar ( 255 ) ,
2020-09-04 12:53:22 +03:00
first_rule_node_id uuid ,
root boolean ,
debug_mode boolean ,
search_text varchar ( 255 ) ,
tenant_id uuid
) ;
CREATE TABLE IF NOT EXISTS rule_node (
id uuid NOT NULL CONSTRAINT rule_node_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
rule_chain_id uuid ,
additional_info varchar ,
configuration varchar ( 10000000 ) ,
type varchar ( 255 ) ,
name varchar ( 255 ) ,
debug_mode boolean ,
search_text varchar ( 255 )
) ;
2020-10-02 17:55:40 +03:00
CREATE TABLE IF NOT EXISTS rule_node_state (
id uuid NOT NULL CONSTRAINT rule_node_state_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
rule_node_id uuid NOT NULL ,
entity_type varchar ( 32 ) NOT NULL ,
entity_id uuid NOT NULL ,
state_data varchar ( 16384 ) NOT NULL ,
CONSTRAINT rule_node_state_unq_key UNIQUE ( rule_node_id , entity_id ) ,
CONSTRAINT fk_rule_node_state_node_id FOREIGN KEY ( rule_node_id ) REFERENCES rule_node ( id ) ON DELETE CASCADE
) ;
2021-05-31 16:43:33 +03:00
CREATE TABLE IF NOT EXISTS ota_package (
id uuid NOT NULL CONSTRAINT ota_package_pkey PRIMARY KEY ,
2021-04-08 11:45:29 +03:00
created_time bigint NOT NULL ,
tenant_id uuid NOT NULL ,
2021-04-29 17:00:05 +03:00
device_profile_id uuid ,
2021-04-28 12:44:57 +03:00
type varchar ( 32 ) NOT NULL ,
2021-04-08 11:45:29 +03:00
title varchar ( 255 ) NOT NULL ,
2021-04-09 15:32:06 +03:00
version varchar ( 255 ) NOT NULL ,
2021-06-03 18:34:39 +03:00
url varchar ( 255 ) ,
2021-04-09 15:32:06 +03:00
file_name varchar ( 255 ) ,
content_type varchar ( 255 ) ,
checksum_algorithm varchar ( 32 ) ,
checksum varchar ( 1020 ) ,
2021-04-23 16:53:33 +03:00
data oid ,
2021-04-23 14:35:47 +03:00
data_size bigint ,
2021-04-09 15:32:06 +03:00
additional_info varchar ,
2021-04-08 11:45:29 +03:00
search_text varchar ( 255 ) ,
2021-05-31 16:43:33 +03:00
CONSTRAINT ota_package_tenant_title_version_unq_key UNIQUE ( tenant_id , title , version )
2021-04-29 10:02:51 +03:00
-- CONSTRAINT fk_device_profile_firmware FOREIGN KEY (device_profile_id) REFERENCES device_profile(id) ON DELETE CASCADE
2021-04-08 10:30:30 +03:00
) ;
2020-08-18 18:58:53 +03:00
CREATE TABLE IF NOT EXISTS device_profile (
id uuid NOT NULL CONSTRAINT device_profile_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
name varchar ( 255 ) ,
2020-08-20 19:44:29 +03:00
type varchar ( 255 ) ,
2021-05-06 17:01:46 +03:00
image varchar ( 1000000 ) ,
2020-09-02 18:52:59 +03:00
transport_type varchar ( 255 ) ,
2020-10-01 12:23:12 +03:00
provision_type varchar ( 255 ) ,
2020-09-03 11:52:25 +03:00
profile_data jsonb ,
2020-08-18 18:58:53 +03:00
description varchar ,
search_text varchar ( 255 ) ,
is_default boolean ,
tenant_id uuid ,
2021-04-08 10:30:30 +03:00
firmware_id uuid ,
2021-04-28 15:31:32 +03:00
software_id uuid ,
2020-08-18 18:58:53 +03:00
default_rule_chain_id uuid ,
2021-05-07 18:25:05 +03:00
default_dashboard_id uuid ,
2020-10-28 14:48:00 +02:00
default_queue_name varchar ( 255 ) ,
2020-10-01 12:23:12 +03:00
provision_device_key varchar ,
2020-09-04 12:53:22 +03:00
CONSTRAINT device_profile_name_unq_key UNIQUE ( tenant_id , name ) ,
2020-10-01 12:23:12 +03:00
CONSTRAINT device_provision_key_unq_key UNIQUE ( provision_device_key ) ,
2021-04-08 10:30:30 +03:00
CONSTRAINT fk_default_rule_chain_device_profile FOREIGN KEY ( default_rule_chain_id ) REFERENCES rule_chain ( id ) ,
2021-05-07 18:25:05 +03:00
CONSTRAINT fk_default_dashboard_device_profile FOREIGN KEY ( default_dashboard_id ) REFERENCES dashboard ( id ) ,
2021-05-31 16:43:33 +03:00
CONSTRAINT fk_firmware_device_profile FOREIGN KEY ( firmware_id ) REFERENCES ota_package ( id ) ,
CONSTRAINT fk_software_device_profile FOREIGN KEY ( software_id ) REFERENCES ota_package ( id )
2020-08-18 18:58:53 +03:00
) ;
2021-04-28 15:31:32 +03:00
-- We will use one-to-many relation in the first release and extend this feature in case of user requests
-- CREATE TABLE IF NOT EXISTS device_profile_firmware (
-- device_profile_id uuid NOT NULL,
-- firmware_id uuid NOT NULL,
-- CONSTRAINT device_profile_firmware_unq_key UNIQUE (device_profile_id, firmware_id),
-- CONSTRAINT fk_device_profile_firmware_device_profile FOREIGN KEY (device_profile_id) REFERENCES device_profile(id) ON DELETE CASCADE,
-- CONSTRAINT fk_device_profile_firmware_firmware FOREIGN KEY (firmware_id) REFERENCES firmware(id) ON DELETE CASCADE,
-- );
2020-08-20 19:44:29 +03:00
CREATE TABLE IF NOT EXISTS device (
id uuid NOT NULL CONSTRAINT device_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
additional_info varchar ,
customer_id uuid ,
device_profile_id uuid NOT NULL ,
2020-09-03 11:52:25 +03:00
device_data jsonb ,
2020-08-20 19:44:29 +03:00
type varchar ( 255 ) ,
name varchar ( 255 ) ,
label varchar ( 255 ) ,
search_text varchar ( 255 ) ,
tenant_id uuid ,
2021-04-08 10:30:30 +03:00
firmware_id uuid ,
2021-04-28 15:31:32 +03:00
software_id uuid ,
2020-08-20 19:44:29 +03:00
CONSTRAINT device_name_unq_key UNIQUE ( tenant_id , name ) ,
2021-04-08 10:30:30 +03:00
CONSTRAINT fk_device_profile FOREIGN KEY ( device_profile_id ) REFERENCES device_profile ( id ) ,
2021-05-31 16:43:33 +03:00
CONSTRAINT fk_firmware_device FOREIGN KEY ( firmware_id ) REFERENCES ota_package ( id ) ,
CONSTRAINT fk_software_device FOREIGN KEY ( software_id ) REFERENCES ota_package ( id )
2020-08-20 19:44:29 +03:00
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS device_credentials (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT device_credentials_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-17 17:32:32 +03:00
credentials_id varchar ,
credentials_type varchar ( 255 ) ,
2017-07-17 21:19:31 +03:00
credentials_value varchar ,
2020-06-22 11:10:28 +03:00
device_id uuid ,
2020-07-21 15:04:24 +03:00
CONSTRAINT device_credentials_id_unq_key UNIQUE ( credentials_id ) ,
CONSTRAINT device_credentials_device_id_unq_key UNIQUE ( device_id )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS event (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT event_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2019-02-14 16:08:57 +02:00
body varchar ( 10000000 ) ,
2020-06-22 11:10:28 +03:00
entity_id uuid ,
2017-07-17 17:32:32 +03:00
entity_type varchar ( 255 ) ,
event_type varchar ( 255 ) ,
event_uid varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2020-04-22 16:16:58 +03:00
ts bigint NOT NULL ,
2017-06-26 19:19:17 +03:00
CONSTRAINT event_unq_key UNIQUE ( tenant_id , entity_type , entity_id , event_type , event_uid )
2017-05-31 18:55:59 +03:00
) ;
2017-06-14 19:27:35 +03:00
CREATE TABLE IF NOT EXISTS relation (
2020-06-22 11:10:28 +03:00
from_id uuid ,
2017-07-17 17:32:32 +03:00
from_type varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
to_id uuid ,
2017-07-17 17:32:32 +03:00
to_type varchar ( 255 ) ,
relation_type_group varchar ( 255 ) ,
relation_type varchar ( 255 ) ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2018-12-20 14:53:16 +01:00
CONSTRAINT relation_pkey PRIMARY KEY ( from_id , from_type , relation_type_group , relation_type , to_id , to_type )
2020-07-16 18:35:03 +03:00
) ;
-- ) PARTITION BY LIST (relation_type_group);
--
-- CREATE TABLE other_relations PARTITION OF relation DEFAULT;
-- CREATE TABLE common_relations PARTITION OF relation FOR VALUES IN ('COMMON');
-- CREATE TABLE alarm_relations PARTITION OF relation FOR VALUES IN ('ALARM');
-- CREATE TABLE dashboard_relations PARTITION OF relation FOR VALUES IN ('DASHBOARD');
-- CREATE TABLE rule_relations PARTITION OF relation FOR VALUES IN ('RULE_CHAIN', 'RULE_NODE');
2017-06-14 19:27:35 +03:00
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS tb_user (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT tb_user_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2017-07-17 17:32:32 +03:00
authority varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
customer_id uuid ,
2017-07-17 17:32:32 +03:00
email varchar ( 255 ) UNIQUE ,
first_name varchar ( 255 ) ,
last_name varchar ( 255 ) ,
search_text varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid
2017-05-31 18:55:59 +03:00
) ;
2020-08-20 19:44:29 +03:00
CREATE TABLE IF NOT EXISTS tenant_profile (
id uuid NOT NULL CONSTRAINT tenant_profile_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
name varchar ( 255 ) ,
2020-09-03 11:52:25 +03:00
profile_data jsonb ,
2020-08-20 19:44:29 +03:00
description varchar ,
search_text varchar ( 255 ) ,
is_default boolean ,
isolated_tb_core boolean ,
isolated_tb_rule_engine boolean ,
CONSTRAINT tenant_profile_name_unq_key UNIQUE ( name )
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS tenant (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT tenant_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-01 20:39:00 +03:00
additional_info varchar ,
2020-08-18 18:58:53 +03:00
tenant_profile_id uuid NOT NULL ,
2017-07-17 17:32:32 +03:00
address varchar ,
address2 varchar ,
city varchar ( 255 ) ,
country varchar ( 255 ) ,
email varchar ( 255 ) ,
phone varchar ( 255 ) ,
region varchar ( 255 ) ,
search_text varchar ( 255 ) ,
state varchar ( 255 ) ,
title varchar ( 255 ) ,
2020-04-13 10:24:40 +03:00
zip varchar ( 255 ) ,
2020-08-20 19:44:29 +03:00
CONSTRAINT fk_tenant_profile FOREIGN KEY ( tenant_profile_id ) REFERENCES tenant_profile ( id )
2020-08-18 18:58:53 +03:00
) ;
2017-05-31 18:55:59 +03:00
CREATE TABLE IF NOT EXISTS user_credentials (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT user_credentials_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-17 17:32:32 +03:00
activate_token varchar ( 255 ) UNIQUE ,
2017-05-31 18:55:59 +03:00
enabled boolean ,
2017-07-17 17:32:32 +03:00
password varchar ( 255 ) ,
reset_token varchar ( 255 ) UNIQUE ,
2020-06-22 11:10:28 +03:00
user_id uuid UNIQUE
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS widget_type (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT widget_type_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-17 17:32:32 +03:00
alias varchar ( 255 ) ,
bundle_alias varchar ( 255 ) ,
2017-07-03 11:34:11 +03:00
descriptor varchar ( 1000000 ) ,
2017-07-17 17:32:32 +03:00
name varchar ( 255 ) ,
2021-02-04 19:00:28 +02:00
tenant_id uuid ,
image varchar ( 1000000 ) ,
description varchar ( 255 )
2017-05-31 18:55:59 +03:00
) ;
CREATE TABLE IF NOT EXISTS widgets_bundle (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT widgets_bundle_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2017-07-17 17:32:32 +03:00
alias varchar ( 255 ) ,
search_text varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
2021-02-04 19:00:28 +02:00
title varchar ( 255 ) ,
image varchar ( 1000000 ) ,
description varchar ( 255 )
2018-03-12 12:28:16 +02:00
) ;
2018-10-09 18:51:10 +03:00
CREATE TABLE IF NOT EXISTS entity_view (
2020-06-22 11:10:28 +03:00
id uuid NOT NULL CONSTRAINT entity_view_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
entity_id uuid ,
2018-09-05 19:29:42 +03:00
entity_type varchar ( 255 ) ,
2020-06-22 11:10:28 +03:00
tenant_id uuid ,
customer_id uuid ,
2018-10-09 18:51:10 +03:00
type varchar ( 255 ) ,
2018-09-05 19:29:42 +03:00
name varchar ( 255 ) ,
2018-11-09 12:49:51 +02:00
keys varchar ( 10000000 ) ,
2018-09-11 15:59:00 +03:00
start_ts bigint ,
end_ts bigint ,
2018-09-03 19:26:42 +03:00
search_text varchar ( 255 ) ,
2018-09-05 19:29:42 +03:00
additional_info varchar
2018-09-03 19:26:42 +03:00
) ;
2020-04-22 13:03:53 +03:00
2020-07-07 18:02:29 +03:00
CREATE TABLE IF NOT EXISTS ts_kv_latest
(
entity_id uuid NOT NULL ,
key int NOT NULL ,
ts bigint NOT NULL ,
bool_v boolean ,
str_v varchar ( 10000000 ) ,
long_v bigint ,
dbl_v double precision ,
json_v json ,
CONSTRAINT ts_kv_latest_pkey PRIMARY KEY ( entity_id , key )
) ;
CREATE TABLE IF NOT EXISTS ts_kv_dictionary
(
key varchar ( 255 ) NOT NULL ,
key_id serial UNIQUE ,
CONSTRAINT ts_key_id_pkey PRIMARY KEY ( key )
) ;
2021-06-10 11:50:11 +03:00
CREATE TABLE IF NOT EXISTS oauth2_params (
id uuid NOT NULL CONSTRAINT oauth2_params_pkey PRIMARY KEY ,
2020-09-23 13:15:56 +03:00
enabled boolean ,
2021-06-10 11:50:11 +03:00
tenant_id uuid ,
created_time bigint NOT NULL
) ;
CREATE TABLE IF NOT EXISTS oauth2_registration (
id uuid NOT NULL CONSTRAINT oauth2_registration_pkey PRIMARY KEY ,
oauth2_params_id uuid NOT NULL ,
2020-08-05 17:35:36 +03:00
created_time bigint NOT NULL ,
additional_info varchar ,
client_id varchar ( 255 ) ,
2021-06-16 18:46:26 +03:00
client_secret varchar ( 2048 ) ,
2020-08-05 17:35:36 +03:00
authorization_uri varchar ( 255 ) ,
token_uri varchar ( 255 ) ,
scope varchar ( 255 ) ,
2021-06-10 17:01:16 +03:00
platforms varchar ( 255 ) ,
2020-08-05 17:35:36 +03:00
user_info_uri varchar ( 255 ) ,
user_name_attribute_name varchar ( 255 ) ,
jwk_set_uri varchar ( 255 ) ,
client_authentication_method varchar ( 255 ) ,
login_button_label varchar ( 255 ) ,
login_button_icon varchar ( 255 ) ,
allow_user_creation boolean ,
activate_user boolean ,
type varchar ( 31 ) ,
basic_email_attribute_key varchar ( 31 ) ,
basic_first_name_attribute_key varchar ( 31 ) ,
basic_last_name_attribute_key varchar ( 31 ) ,
basic_tenant_name_strategy varchar ( 31 ) ,
basic_tenant_name_pattern varchar ( 255 ) ,
basic_customer_name_pattern varchar ( 255 ) ,
basic_default_dashboard_name varchar ( 255 ) ,
basic_always_full_screen boolean ,
custom_url varchar ( 255 ) ,
custom_username varchar ( 255 ) ,
2020-08-13 14:14:38 +03:00
custom_password varchar ( 255 ) ,
2021-06-10 11:50:11 +03:00
custom_send_token boolean ,
CONSTRAINT fk_registration_oauth2_params FOREIGN KEY ( oauth2_params_id ) REFERENCES oauth2_params ( id ) ON DELETE CASCADE
2020-08-05 17:35:36 +03:00
) ;
2021-06-10 11:50:11 +03:00
CREATE TABLE IF NOT EXISTS oauth2_domain (
id uuid NOT NULL CONSTRAINT oauth2_domain_pkey PRIMARY KEY ,
oauth2_params_id uuid NOT NULL ,
2020-10-01 17:22:17 +03:00
created_time bigint NOT NULL ,
domain_name varchar ( 255 ) ,
domain_scheme varchar ( 31 ) ,
2021-06-10 11:50:11 +03:00
CONSTRAINT fk_domain_oauth2_params FOREIGN KEY ( oauth2_params_id ) REFERENCES oauth2_params ( id ) ON DELETE CASCADE ,
CONSTRAINT oauth2_domain_unq_key UNIQUE ( oauth2_params_id , domain_name , domain_scheme )
) ;
CREATE TABLE IF NOT EXISTS oauth2_mobile (
id uuid NOT NULL CONSTRAINT oauth2_mobile_pkey PRIMARY KEY ,
oauth2_params_id uuid NOT NULL ,
created_time bigint NOT NULL ,
pkg_name varchar ( 255 ) ,
2021-06-11 13:37:23 +03:00
app_secret varchar ( 2048 ) ,
2021-06-10 11:50:11 +03:00
CONSTRAINT fk_mobile_oauth2_params FOREIGN KEY ( oauth2_params_id ) REFERENCES oauth2_params ( id ) ON DELETE CASCADE ,
CONSTRAINT oauth2_mobile_unq_key UNIQUE ( oauth2_params_id , pkg_name )
2020-10-01 17:22:17 +03:00
) ;
2020-08-12 17:31:34 +03:00
CREATE TABLE IF NOT EXISTS oauth2_client_registration_template (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_template_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2020-08-13 18:21:26 +03:00
additional_info varchar ,
2020-08-12 17:31:34 +03:00
provider_id varchar ( 255 ) ,
authorization_uri varchar ( 255 ) ,
token_uri varchar ( 255 ) ,
scope varchar ( 255 ) ,
user_info_uri varchar ( 255 ) ,
user_name_attribute_name varchar ( 255 ) ,
jwk_set_uri varchar ( 255 ) ,
client_authentication_method varchar ( 255 ) ,
2020-10-08 18:22:16 +03:00
type varchar ( 31 ) ,
2020-08-12 17:31:34 +03:00
basic_email_attribute_key varchar ( 31 ) ,
basic_first_name_attribute_key varchar ( 31 ) ,
basic_last_name_attribute_key varchar ( 31 ) ,
basic_tenant_name_strategy varchar ( 31 ) ,
basic_tenant_name_pattern varchar ( 255 ) ,
basic_customer_name_pattern varchar ( 255 ) ,
basic_default_dashboard_name varchar ( 255 ) ,
basic_always_full_screen boolean ,
2020-08-13 11:48:14 +03:00
comment varchar ,
2020-09-17 11:35:42 +03:00
login_button_icon varchar ( 255 ) ,
login_button_label varchar ( 255 ) ,
2020-08-13 18:21:26 +03:00
help_link varchar ( 255 ) ,
2020-08-12 17:31:34 +03:00
CONSTRAINT oauth2_template_provider_id_unq_key UNIQUE ( provider_id )
) ;
2021-06-10 11:50:11 +03:00
-- Deprecated
CREATE TABLE IF NOT EXISTS oauth2_client_registration_info (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_info_pkey PRIMARY KEY ,
enabled boolean ,
created_time bigint NOT NULL ,
additional_info varchar ,
client_id varchar ( 255 ) ,
client_secret varchar ( 255 ) ,
authorization_uri varchar ( 255 ) ,
token_uri varchar ( 255 ) ,
scope varchar ( 255 ) ,
user_info_uri varchar ( 255 ) ,
user_name_attribute_name varchar ( 255 ) ,
jwk_set_uri varchar ( 255 ) ,
client_authentication_method varchar ( 255 ) ,
login_button_label varchar ( 255 ) ,
login_button_icon varchar ( 255 ) ,
allow_user_creation boolean ,
activate_user boolean ,
type varchar ( 31 ) ,
basic_email_attribute_key varchar ( 31 ) ,
basic_first_name_attribute_key varchar ( 31 ) ,
basic_last_name_attribute_key varchar ( 31 ) ,
basic_tenant_name_strategy varchar ( 31 ) ,
basic_tenant_name_pattern varchar ( 255 ) ,
basic_customer_name_pattern varchar ( 255 ) ,
basic_default_dashboard_name varchar ( 255 ) ,
basic_always_full_screen boolean ,
custom_url varchar ( 255 ) ,
custom_username varchar ( 255 ) ,
custom_password varchar ( 255 ) ,
custom_send_token boolean
) ;
-- Deprecated
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id uuid NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
domain_name varchar ( 255 ) ,
domain_scheme varchar ( 31 ) ,
client_registration_info_id uuid
) ;
2020-10-19 19:51:58 +03:00
CREATE TABLE IF NOT EXISTS api_usage_state (
2020-10-19 15:39:15 +03:00
id uuid NOT NULL CONSTRAINT usage_record_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
tenant_id uuid ,
entity_type varchar ( 32 ) ,
entity_id uuid ,
2020-11-10 16:19:44 +02:00
transport varchar ( 32 ) ,
db_storage varchar ( 32 ) ,
re_exec varchar ( 32 ) ,
js_exec varchar ( 32 ) ,
2020-11-20 18:02:09 +02:00
email_exec varchar ( 32 ) ,
sms_exec varchar ( 32 ) ,
2021-05-11 16:17:37 +03:00
alarm_exec varchar ( 32 ) ,
2020-10-19 19:51:58 +03:00
CONSTRAINT api_usage_state_unq_key UNIQUE ( tenant_id , entity_id )
2020-10-19 15:39:15 +03:00
) ;
2021-03-09 19:45:28 +02:00
CREATE TABLE IF NOT EXISTS resource (
2021-03-19 20:14:17 +02:00
id uuid NOT NULL CONSTRAINT resource_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
2021-03-09 19:45:28 +02:00
tenant_id uuid NOT NULL ,
2021-03-19 20:14:17 +02:00
title varchar ( 255 ) NOT NULL ,
2021-03-09 19:45:28 +02:00
resource_type varchar ( 32 ) NOT NULL ,
2021-03-19 20:14:17 +02:00
resource_key varchar ( 255 ) NOT NULL ,
search_text varchar ( 255 ) ,
2021-03-24 11:03:13 +02:00
file_name varchar ( 255 ) NOT NULL ,
2021-03-19 20:14:17 +02:00
data varchar ,
CONSTRAINT resource_unq_key UNIQUE ( tenant_id , resource_type , resource_key )
2021-03-09 19:45:28 +02:00
) ;
2019-09-17 13:05:27 +03:00
CREATE TABLE IF NOT EXISTS edge (
2020-10-12 12:00:54 +03:00
id uuid NOT NULL CONSTRAINT edge_pkey PRIMARY KEY ,
2020-10-12 16:54:05 +03:00
created_time bigint NOT NULL ,
2019-09-17 13:05:27 +03:00
additional_info varchar ,
2020-10-12 12:00:54 +03:00
customer_id uuid ,
root_rule_chain_id uuid ,
2019-10-07 12:54:28 +03:00
type varchar ( 255 ) ,
2019-09-17 13:05:27 +03:00
name varchar ( 255 ) ,
2019-10-08 18:47:34 +03:00
label varchar ( 255 ) ,
2019-10-28 12:13:01 +02:00
routing_key varchar ( 255 ) ,
secret varchar ( 255 ) ,
2020-09-25 15:22:03 +03:00
edge_license_key varchar ( 30 ) ,
cloud_endpoint varchar ( 255 ) ,
2019-09-17 13:05:27 +03:00
search_text varchar ( 255 ) ,
2020-10-12 12:00:54 +03:00
tenant_id uuid ,
2020-06-05 12:57:41 +03:00
CONSTRAINT edge_name_unq_key UNIQUE ( tenant_id , name ) ,
CONSTRAINT edge_routing_key_unq_key UNIQUE ( routing_key )
2020-05-08 22:39:51 +03:00
) ;
2020-06-16 16:49:27 +03:00
CREATE TABLE IF NOT EXISTS edge_event (
2020-10-12 12:00:54 +03:00
id uuid NOT NULL CONSTRAINT edge_event_pkey PRIMARY KEY ,
2020-10-12 16:54:05 +03:00
created_time bigint NOT NULL ,
2020-10-12 12:00:54 +03:00
edge_id uuid ,
2020-06-16 16:49:27 +03:00
edge_event_type varchar ( 255 ) ,
2020-09-17 12:53:38 +03:00
edge_event_uid varchar ( 255 ) ,
2020-10-12 12:00:54 +03:00
entity_id uuid ,
2020-06-16 16:49:27 +03:00
edge_event_action varchar ( 255 ) ,
2020-09-17 12:53:38 +03:00
body varchar ( 10000000 ) ,
2020-10-12 12:00:54 +03:00
tenant_id uuid ,
2020-06-16 16:49:27 +03:00
ts bigint NOT NULL
2020-06-19 10:19:40 +03:00
) ;
2021-06-11 11:10:06 +03:00
CREATE TABLE IF NOT EXISTS rpc (
id uuid NOT NULL CONSTRAINT rpc_pkey PRIMARY KEY ,
created_time bigint NOT NULL ,
tenant_id uuid NOT NULL ,
device_id uuid NOT NULL ,
expiration_time bigint NOT NULL ,
request varchar ( 10000000 ) NOT NULL ,
response varchar ( 10000000 ) ,
status varchar ( 255 ) NOT NULL
) ;
2020-04-22 16:16:58 +03:00
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl ( IN ttl bigint , IN debug_ttl bigint , INOUT deleted bigint )
2020-04-22 13:03:53 +03:00
LANGUAGE plpgsql AS
$ $
DECLARE
ttl_ts bigint ;
2020-04-22 16:16:58 +03:00
debug_ttl_ts bigint ;
ttl_deleted_count bigint DEFAULT 0 ;
debug_ttl_deleted_count bigint DEFAULT 0 ;
2020-04-22 13:03:53 +03:00
BEGIN
2020-04-22 16:16:58 +03:00
IF ttl > 0 THEN
ttl_ts : = ( EXTRACT ( EPOCH FROM current_timestamp ) * 1000 - ttl : : bigint * 1000 ) : : bigint ;
2020-04-22 13:03:53 +03:00
EXECUTE format (
2020-04-22 16:16:58 +03:00
' WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type != %L::varchar AND event_type != %L::varchar) RETURNING *) SELECT count(*) FROM deleted ' , ttl_ts , ' DEBUG_RULE_NODE ' , ' DEBUG_RULE_CHAIN ' ) into ttl_deleted_count ;
2020-04-22 13:03:53 +03:00
END IF ;
2020-04-22 16:16:58 +03:00
IF debug_ttl > 0 THEN
debug_ttl_ts : = ( EXTRACT ( EPOCH FROM current_timestamp ) * 1000 - debug_ttl : : bigint * 1000 ) : : bigint ;
EXECUTE format (
' WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type = %L::varchar OR event_type = %L::varchar) RETURNING *) SELECT count(*) FROM deleted ' , debug_ttl_ts , ' DEBUG_RULE_NODE ' , ' DEBUG_RULE_CHAIN ' ) into debug_ttl_deleted_count ;
END IF ;
RAISE NOTICE ' Events removed by ttl: % ' , ttl_deleted_count ;
RAISE NOTICE ' Debug Events removed by ttl: % ' , debug_ttl_deleted_count ;
deleted : = ttl_deleted_count + debug_ttl_deleted_count ;
2020-04-22 13:03:53 +03:00
END
$ $ ;
2020-07-07 18:02:29 +03:00
CREATE OR REPLACE FUNCTION to_uuid ( IN entity_id varchar , OUT uuid_id uuid ) AS
$ $
BEGIN
uuid_id : = substring ( entity_id , 8 , 8 ) | | ' - ' | | substring ( entity_id , 4 , 4 ) | | ' -1 ' | | substring ( entity_id , 1 , 3 ) | |
' - ' | | substring ( entity_id , 16 , 4 ) | | ' - ' | | substring ( entity_id , 20 , 12 ) ;
END ;
$ $ LANGUAGE plpgsql ;
2020-08-03 11:09:13 +03:00
2020-10-12 15:19:06 +03:00
2020-08-12 16:31:45 +03:00
CREATE OR REPLACE PROCEDURE cleanup_edge_events_by_ttl ( IN ttl bigint , INOUT deleted bigint )
LANGUAGE plpgsql AS
$ $
DECLARE
ttl_ts bigint ;
ttl_deleted_count bigint DEFAULT 0 ;
BEGIN
IF ttl > 0 THEN
ttl_ts : = ( EXTRACT ( EPOCH FROM current_timestamp ) * 1000 - ttl : : bigint * 1000 ) : : bigint ;
EXECUTE format (
' WITH deleted AS (DELETE FROM edge_event WHERE ts < %L::bigint RETURNING *) SELECT count(*) FROM deleted ' , ttl_ts ) into ttl_deleted_count ;
END IF ;
RAISE NOTICE ' Edge events removed by ttl: % ' , ttl_deleted_count ;
deleted : = ttl_deleted_count ;
END
$ $ ;