diff --git a/docker/postgres/docker-compose-deps-postgres.yml b/docker/postgres/docker-compose-deps-postgres.yml
index 62975d1499..9e9bd23b9f 100644
--- a/docker/postgres/docker-compose-deps-postgres.yml
+++ b/docker/postgres/docker-compose-deps-postgres.yml
@@ -21,11 +21,11 @@ services:
restart_policy:
condition: on-failure
environment:
+ POSTGRES_DB: "hawkbit"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "admin"
- POSTGRES_DB: "hawkbit"
healthcheck:
- test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"]
+ test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB:-hawkbit} -U ${POSTGRES_USER:-postgres}"]
interval: 20s
retries: 10
@@ -44,5 +44,4 @@ services:
- "5672:5672"
deploy:
restart_policy:
- condition: on-failure
-
+ condition: on-failure
\ No newline at end of file
diff --git a/docs/quick-start.md b/docs/quick-start.md
index 809cd4298b..52aa715a7e 100644
--- a/docs/quick-start.md
+++ b/docs/quick-start.md
@@ -123,7 +123,7 @@ $ mvn clean install -DskipTests
$ java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar
```
-> **Note:** you could start it also in **microservices mode** by:
+**Note:** you could start it also in **microservices mode** by:
```bash
$ java -jar ./hawkbit-mgmt/hawkbit-mgmt-server/target/hawkbit-mgmt-server-0-SNAPSHOT.jar
@@ -137,10 +137,22 @@ And (only if you want to use the DMF feature):
$ java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar
```
+**Note:** You could also start with H2 console enabled with:
+```bash
+$java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar --spring.h2.console.enabled=true --spring.h2.console.path=/h2-console
+```
+for monolith, and:
+```bash
+$java -jar ./hawkbit-mgmt/hawkbit-mgmt-server/target/hawkbit-mgmt-server-0-SNAPSHOT.jar --spring.h2.console.enabled=true --spring.h2.console.path=/h2-console
+```
+for mgmt server in micro-service mode.
+
+Then you will get H2 console available at '/h2-console' (Database available at 'jdbc:h2:mem:hawkbit')
+
You could also start the **hawkBit UI** by:
```bash
-$ java -jar ./hawkbit--ui/target/hawkbit-ui-0-SNAPSHOT.jar
+$ java -jar ./hawkbit-ui/target/hawkbit-ui-0-SNAPSHOT.jar
```
---
diff --git a/eclipse_codeformatter.xml b/eclipse_codeformatter.xml
index a985b3a23d..7f22ee69db 100644
--- a/eclipse_codeformatter.xml
+++ b/eclipse_codeformatter.xml
@@ -1,504 +1,380 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql
new file mode 100644
index 0000000000..2586cdb925
--- /dev/null
+++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql
@@ -0,0 +1,508 @@
+-- hawkbit 1.0.0 H2 database migration script baseline --
+
+CREATE TABLE SP_LOCK ( -- spring table --
+ LOCK_KEY CHAR(36) NOT NULL,
+ REGION VARCHAR(100) NOT NULL,
+ CLIENT_ID CHAR(36),
+ CREATED_DATE TIMESTAMP NOT NULL,
+ PRIMARY KEY (LOCK_KEY, REGION)
+);
+
+CREATE TABLE sp_distribution_set_tag (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_tag ON sp_distribution_set_tag (name, tenant);
+CREATE INDEX sp_idx_distribution_set_tag_prim ON sp_distribution_set_tag (tenant, id);
+CREATE INDEX sp_idx_distribution_set_tag_01 ON sp_distribution_set_tag (tenant, name);
+
+CREATE TABLE sp_distribution_set_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_type_type_key ON sp_distribution_set_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_distribution_set_type_name ON sp_distribution_set_type (name, tenant);
+CREATE INDEX sp_idx_distribution_set_type_prim ON sp_distribution_set_type (tenant, id);
+CREATE INDEX sp_idx_distribution_set_type_01 ON sp_distribution_set_type (tenant, deleted);
+
+CREATE TABLE sp_software_module_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ max_ds_assignments INTEGER NOT NULL,
+ min_artifacts INTEGER DEFAULT 0 NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module_type_type_key ON sp_software_module_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_software_module_type_name ON sp_software_module_type (name, tenant);
+CREATE INDEX sp_idx_software_module_type_prim ON sp_software_module_type (tenant, id);
+CREATE INDEX sp_idx_software_module_type_01 ON sp_software_module_type (tenant, deleted);
+
+CREATE TABLE sp_target_tag (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_tag ON sp_target_tag (name, tenant);
+CREATE INDEX sp_idx_target_tag_prim ON sp_target_tag (tenant, id);
+CREATE INDEX sp_idx_target_tag_01 ON sp_target_tag (tenant, name);
+
+CREATE TABLE sp_target_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_type_key ON sp_target_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_target_name ON sp_target_type (name, tenant);
+CREATE INDEX sp_idx_target_type_prim ON sp_target_type (tenant, id);
+
+CREATE TABLE sp_tenant_configuration (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ conf_key VARCHAR(128) NOT NULL,
+ conf_value VARCHAR(512) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
+
+CREATE TABLE sp_distribution_set (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ required_migration_step BOOLEAN,
+ ds_type BIGINT NOT NULL,
+ valid BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set ON sp_distribution_set (tenant, name, version, ds_type);
+CREATE INDEX sp_idx_distribution_set_prim ON sp_distribution_set (tenant, id);
+CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set (tenant, deleted);
+ALTER TABLE sp_distribution_set
+ ADD CONSTRAINT fk_distribution_set_ds_type FOREIGN KEY (ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_tenant (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ default_ds_type BIGINT NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant ON sp_tenant (tenant);
+CREATE INDEX sp_idx_tenant_prim ON sp_tenant (tenant, id);
+ALTER TABLE sp_tenant
+ ADD CONSTRAINT fk_sp_tenant_default_ds_type FOREIGN KEY (default_ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_ds_type_element (
+ mandatory BOOLEAN,
+ distribution_set_type BIGINT NOT NULL,
+ software_module_type BIGINT NOT NULL,
+ PRIMARY KEY (distribution_set_type, software_module_type)
+);
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_software_module_type FOREIGN KEY (software_module_type) REFERENCES sp_software_module_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_software_module (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ vendor VARCHAR(256),
+ sm_type BIGINT NOT NULL,
+ encrypted BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module ON sp_software_module (sm_type, name, version, tenant);
+CREATE INDEX sp_idx_software_module_01 ON sp_software_module (tenant, deleted, name, version);
+CREATE INDEX sp_idx_software_module_02 ON sp_software_module (tenant, deleted, sm_type);
+CREATE INDEX sp_idx_software_module_prim ON sp_software_module (tenant, id);
+ALTER TABLE sp_software_module
+ ADD CONSTRAINT fk_software_module_sm_type FOREIGN KEY (sm_type) REFERENCES sp_software_module_type (id);
+
+CREATE TABLE sp_target_type_ds_type (
+ target_type BIGINT NOT NULL,
+ distribution_set_type BIGINT NOT NULL,
+ PRIMARY KEY (target_type, distribution_set_type)
+);
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ ds BIGINT NOT NULL,
+ PRIMARY KEY (ds, meta_key)
+);
+ALTER TABLE sp_ds_metadata
+ ADD CONSTRAINT fk_ds_metadata_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_tag (
+ ds BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (ds, tag)
+);
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_tag FOREIGN KEY (tag) REFERENCES sp_distribution_set_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ last_check BIGINT,
+ group_theshold FLOAT,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target_filter VARCHAR(1024),
+ forced_time BIGINT,
+ total_targets BIGINT,
+ rollout_groups_created BIGINT,
+ start_at BIGINT,
+ deleted BOOLEAN,
+ action_type INTEGER NOT NULL,
+ approval_decided_by VARCHAR(64),
+ approval_remark VARCHAR(255),
+ weight INTEGER NOT NULL,
+ access_control_context VARCHAR(4096),
+ is_dynamic BOOLEAN,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout ON sp_rollout (name, tenant);
+CREATE INDEX sp_idx_rollout_status_tenant ON sp_rollout (tenant, status);
+ALTER TABLE sp_rollout
+ ADD CONSTRAINT fk_rollout_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+
+CREATE TABLE sp_target (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ controller_id VARCHAR(256) NOT NULL,
+ sec_token VARCHAR(128) NOT NULL,
+ assigned_distribution_set BIGINT,
+ install_date BIGINT,
+ address VARCHAR(512),
+ last_target_query BIGINT,
+ request_controller_attributes BOOLEAN NOT NULL,
+ installed_distribution_set BIGINT,
+ update_status INTEGER NOT NULL,
+ target_type BIGINT,
+ target_group VARCHAR(256),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_controller_id ON sp_target (controller_id, tenant);
+CREATE INDEX sp_idx_target_01 ON sp_target (tenant, name, assigned_distribution_set);
+CREATE INDEX sp_idx_target_03 ON sp_target (tenant, controller_id, assigned_distribution_set);
+CREATE INDEX sp_idx_target_04 ON sp_target (tenant, created_at);
+CREATE INDEX sp_idx_target_prim ON sp_target (tenant, id);
+CREATE INDEX sp_idx_target_05 ON sp_target (tenant, last_modified_at);
+CREATE INDEX sp_idx_target_group ON sp_target (tenant, target_group);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_assign_ds FOREIGN KEY (assigned_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_inst_ds FOREIGN KEY (installed_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_relation_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_target_filter_query (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ name VARCHAR(128) NOT NULL,
+ query VARCHAR(1024) NOT NULL,
+ auto_assign_distribution_set BIGINT,
+ auto_assign_action_type INTEGER,
+ auto_assign_weight INTEGER NOT NULL,
+ auto_assign_initiated_by VARCHAR(64),
+ confirmation_required BOOLEAN,
+ access_control_context VARCHAR(4096),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);
+ALTER TABLE sp_target_filter_query
+ ADD CONSTRAINT fk_target_filter_query_auto_assign_distribution_set FOREIGN KEY (auto_assign_distribution_set) REFERENCES sp_distribution_set (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_artifact (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ md5_hash VARCHAR(32),
+ file_size BIGINT,
+ provided_file_name VARCHAR(256),
+ sha1_hash VARCHAR(40) NOT NULL,
+ software_module BIGINT NOT NULL,
+ sha256_hash CHAR(64),
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_artifact_prim ON sp_artifact (tenant, id);
+CREATE INDEX sp_idx_artifact_01 ON sp_artifact (tenant, software_module);
+CREATE INDEX sp_idx_artifact_02 ON sp_artifact (tenant, sha1_hash);
+ALTER TABLE sp_artifact
+ ADD CONSTRAINT fk_artifact_software_module FOREIGN KEY (software_module) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_sm (
+ ds_id BIGINT NOT NULL,
+ sm_id BIGINT NOT NULL,
+ PRIMARY KEY (ds_id, sm_id)
+);
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_ds_id FOREIGN KEY (ds_id) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_sm_id FOREIGN KEY (sm_id) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_sm_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ sm BIGINT NOT NULL,
+ target_visible BOOLEAN,
+ PRIMARY KEY (meta_key, sm)
+);
+ALTER TABLE sp_sm_metadata
+ ADD CONSTRAINT fk_sm_metadata_sm FOREIGN KEY (sm) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout_group (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ error_condition INTEGER,
+ error_condition_exp VARCHAR(512),
+ error_action INTEGER,
+ error_action_exp VARCHAR(512),
+ success_condition INTEGER NOT NULL,
+ success_condition_exp VARCHAR(512) NOT NULL,
+ success_action INTEGER NOT NULL,
+ success_action_exp VARCHAR(512),
+ status INTEGER NOT NULL,
+ parent BIGINT,
+ rollout BIGINT NOT NULL,
+ total_targets BIGINT,
+ target_percentage FLOAT,
+ target_filter VARCHAR(1024),
+ confirmation_required BOOLEAN,
+ is_dynamic BOOLEAN DEFAULT FALSE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout_group ON sp_rollout_group (name, rollout, tenant);
+ALTER TABLE sp_rollout_group
+ ADD CONSTRAINT fk_rollout_group_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_attributes (
+ target BIGINT NOT NULL,
+ attribute_value VARCHAR(128),
+ attribute_key VARCHAR(128) NOT NULL,
+ PRIMARY KEY (target, attribute_key)
+);
+ALTER TABLE sp_target_attributes
+ ADD CONSTRAINT fk_target_attributes_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_conf_status (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ target BIGINT NOT NULL,
+ initiator VARCHAR(64),
+ remark VARCHAR(512),
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ PRIMARY KEY (id)
+);
+ALTER TABLE sp_target_conf_status
+ ADD CONSTRAINT fk_target_conf_status_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ target BIGINT NOT NULL,
+ PRIMARY KEY (target, meta_key)
+);
+ALTER TABLE sp_target_metadata
+ ADD CONSTRAINT fk_target_metadata_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_target_tag (
+ target BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (target, tag)
+);
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_tag FOREIGN KEY (tag) REFERENCES sp_target_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ active BOOLEAN,
+ forced_time BIGINT,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target BIGINT NOT NULL,
+ rollout BIGINT,
+ rollout_group BIGINT,
+ action_type INTEGER NOT NULL,
+ maintenance_cron_schedule VARCHAR(40),
+ maintenance_duration VARCHAR(40),
+ maintenance_time_zone VARCHAR(40),
+ external_ref VARCHAR(512),
+ weight INTEGER NOT NULL,
+ initiated_by VARCHAR(64) NOT NULL,
+ last_action_status_code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_prim ON sp_action (tenant, id);
+CREATE INDEX sp_idx_action_01 ON sp_action (tenant, distribution_set);
+CREATE INDEX sp_idx_action_02 ON sp_action (tenant, target, active);
+CREATE INDEX sp_idx_action_external_ref ON sp_action (external_ref);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id);
+
+CREATE TABLE sp_rollout_target_group (
+ target BIGINT NOT NULL,
+ rollout_group BIGINT NOT NULL,
+ PRIMARY KEY (rollout_group, target)
+);
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id) ON DELETE CASCADE;
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ target_occurred_at BIGINT NOT NULL,
+ status INTEGER NOT NULL,
+ action BIGINT NOT NULL,
+ code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_status_prim ON sp_action_status (tenant, id);
+CREATE INDEX sp_idx_action_status_02 ON sp_action_status (tenant, action, status);
+CREATE INDEX sp_idx_action_status_03 ON sp_action_status (tenant, code);
+ALTER TABLE sp_action_status
+ ADD CONSTRAINT fk_action_status_action FOREIGN KEY (action) REFERENCES sp_action (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status_messages (
+ action_status BIGINT NOT NULL,
+ detail_message VARCHAR(512) NOT NULL
+);
+CREATE INDEX fk_action_status_messages_action_status ON sp_action_status_messages (action_status);
+ALTER TABLE sp_action_status_messages
+ ADD CONSTRAINT fk_action_status_messages_action_status FOREIGN KEY (action_status) REFERENCES sp_action_status (id) ON DELETE CASCADE;
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql
new file mode 100644
index 0000000000..9692a129ed
--- /dev/null
+++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql
@@ -0,0 +1,508 @@
+-- hawkbit 1.0.0 MySQL database migration script baseline --
+
+CREATE TABLE SP_LOCK ( -- spring table --
+ LOCK_KEY CHAR(36) NOT NULL,
+ REGION VARCHAR(100) NOT NULL,
+ CLIENT_ID CHAR(36),
+ CREATED_DATE DATETIME(6) NOT NULL,
+ PRIMARY KEY (LOCK_KEY, REGION)
+);
+
+CREATE TABLE sp_distribution_set_tag (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_tag ON sp_distribution_set_tag (name, tenant);
+CREATE INDEX sp_idx_distribution_set_tag_prim ON sp_distribution_set_tag (tenant, id);
+CREATE INDEX sp_idx_distribution_set_tag_01 ON sp_distribution_set_tag (tenant, name);
+
+CREATE TABLE sp_distribution_set_type (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_type_type_key ON sp_distribution_set_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_distribution_set_type_name ON sp_distribution_set_type (name, tenant);
+CREATE INDEX sp_idx_distribution_set_type_prim ON sp_distribution_set_type (tenant, id);
+CREATE INDEX sp_idx_distribution_set_type_01 ON sp_distribution_set_type (tenant, deleted);
+
+CREATE TABLE sp_software_module_type (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ max_ds_assignments INTEGER NOT NULL,
+ min_artifacts INTEGER DEFAULT 0 NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module_type_type_key ON sp_software_module_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_software_module_type_name ON sp_software_module_type (name, tenant);
+CREATE INDEX sp_idx_software_module_type_prim ON sp_software_module_type (tenant, id);
+CREATE INDEX sp_idx_software_module_type_01 ON sp_software_module_type (tenant, deleted);
+
+CREATE TABLE sp_target_tag (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_tag ON sp_target_tag (name, tenant);
+CREATE INDEX sp_idx_target_tag_prim ON sp_target_tag (tenant, id);
+CREATE INDEX sp_idx_target_tag_01 ON sp_target_tag (tenant, name);
+
+CREATE TABLE sp_target_type (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_type_key ON sp_target_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_target_name ON sp_target_type (name, tenant);
+CREATE INDEX sp_idx_target_type_prim ON sp_target_type (tenant, id);
+
+CREATE TABLE sp_tenant_configuration (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ conf_key VARCHAR(128) NOT NULL,
+ conf_value VARCHAR(512) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
+
+CREATE TABLE sp_distribution_set (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ required_migration_step BOOLEAN,
+ ds_type BIGINT NOT NULL,
+ valid BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set ON sp_distribution_set (tenant, name, version, ds_type);
+CREATE INDEX sp_idx_distribution_set_prim ON sp_distribution_set (tenant, id);
+CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set (tenant, deleted);
+ALTER TABLE sp_distribution_set
+ ADD CONSTRAINT fk_distribution_set_ds_type FOREIGN KEY (ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_tenant (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ default_ds_type BIGINT NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant ON sp_tenant (tenant);
+CREATE INDEX sp_idx_tenant_prim ON sp_tenant (tenant, id);
+ALTER TABLE sp_tenant
+ ADD CONSTRAINT fk_sp_tenant_default_ds_type FOREIGN KEY (default_ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_ds_type_element (
+ mandatory BOOLEAN,
+ distribution_set_type BIGINT NOT NULL,
+ software_module_type BIGINT NOT NULL,
+ PRIMARY KEY (distribution_set_type, software_module_type)
+);
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_software_module_type FOREIGN KEY (software_module_type) REFERENCES sp_software_module_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_software_module (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ vendor VARCHAR(256),
+ sm_type BIGINT NOT NULL,
+ encrypted BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module ON sp_software_module (sm_type, name, version, tenant);
+CREATE INDEX sp_idx_software_module_01 ON sp_software_module (tenant, deleted, name, version);
+CREATE INDEX sp_idx_software_module_02 ON sp_software_module (tenant, deleted, sm_type);
+CREATE INDEX sp_idx_software_module_prim ON sp_software_module (tenant, id);
+ALTER TABLE sp_software_module
+ ADD CONSTRAINT fk_software_module_sm_type FOREIGN KEY (sm_type) REFERENCES sp_software_module_type (id);
+
+CREATE TABLE sp_target_type_ds_type (
+ target_type BIGINT NOT NULL,
+ distribution_set_type BIGINT NOT NULL,
+ PRIMARY KEY (target_type, distribution_set_type)
+);
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ ds BIGINT NOT NULL,
+ PRIMARY KEY (ds, meta_key)
+);
+ALTER TABLE sp_ds_metadata
+ ADD CONSTRAINT fk_ds_metadata_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_tag (
+ ds BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (ds, tag)
+);
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_tag FOREIGN KEY (tag) REFERENCES sp_distribution_set_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ last_check BIGINT,
+ group_theshold FLOAT,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target_filter VARCHAR(1024),
+ forced_time BIGINT,
+ total_targets BIGINT,
+ rollout_groups_created BIGINT,
+ start_at BIGINT,
+ deleted BOOLEAN,
+ action_type INTEGER NOT NULL,
+ approval_decided_by VARCHAR(64),
+ approval_remark VARCHAR(255),
+ weight INTEGER NOT NULL,
+ access_control_context VARCHAR(4096),
+ is_dynamic BOOLEAN,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout ON sp_rollout (name, tenant);
+CREATE INDEX sp_idx_rollout_status_tenant ON sp_rollout (tenant, status);
+ALTER TABLE sp_rollout
+ ADD CONSTRAINT fk_rollout_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+
+CREATE TABLE sp_target (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ controller_id VARCHAR(256) NOT NULL,
+ sec_token VARCHAR(128) NOT NULL,
+ assigned_distribution_set BIGINT,
+ install_date BIGINT,
+ address VARCHAR(512),
+ last_target_query BIGINT,
+ request_controller_attributes BOOLEAN NOT NULL,
+ installed_distribution_set BIGINT,
+ update_status INTEGER NOT NULL,
+ target_type BIGINT,
+ target_group VARCHAR(256),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_controller_id ON sp_target (controller_id, tenant);
+CREATE INDEX sp_idx_target_01 ON sp_target (tenant, name, assigned_distribution_set);
+CREATE INDEX sp_idx_target_03 ON sp_target (tenant, controller_id, assigned_distribution_set);
+CREATE INDEX sp_idx_target_04 ON sp_target (tenant, created_at);
+CREATE INDEX sp_idx_target_prim ON sp_target (tenant, id);
+CREATE INDEX sp_idx_target_05 ON sp_target (tenant, last_modified_at);
+CREATE INDEX sp_idx_target_group ON sp_target (tenant, target_group);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_assign_ds FOREIGN KEY (assigned_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_inst_ds FOREIGN KEY (installed_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_relation_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_target_filter_query (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ name VARCHAR(128) NOT NULL,
+ query VARCHAR(1024) NOT NULL,
+ auto_assign_distribution_set BIGINT,
+ auto_assign_action_type INTEGER,
+ auto_assign_weight INTEGER NOT NULL,
+ auto_assign_initiated_by VARCHAR(64),
+ confirmation_required BOOLEAN,
+ access_control_context VARCHAR(4096),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);
+ALTER TABLE sp_target_filter_query
+ ADD CONSTRAINT fk_target_filter_query_auto_assign_distribution_set FOREIGN KEY (auto_assign_distribution_set) REFERENCES sp_distribution_set (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_artifact (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ md5_hash VARCHAR(32),
+ file_size BIGINT,
+ provided_file_name VARCHAR(256),
+ sha1_hash VARCHAR(40) NOT NULL,
+ software_module BIGINT NOT NULL,
+ sha256_hash CHAR(64),
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_artifact_prim ON sp_artifact (tenant, id);
+CREATE INDEX sp_idx_artifact_01 ON sp_artifact (tenant, software_module);
+CREATE INDEX sp_idx_artifact_02 ON sp_artifact (tenant, sha1_hash);
+ALTER TABLE sp_artifact
+ ADD CONSTRAINT fk_artifact_software_module FOREIGN KEY (software_module) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_sm (
+ ds_id BIGINT NOT NULL,
+ sm_id BIGINT NOT NULL,
+ PRIMARY KEY (ds_id, sm_id)
+);
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_ds_id FOREIGN KEY (ds_id) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_sm_id FOREIGN KEY (sm_id) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_sm_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ sm BIGINT NOT NULL,
+ target_visible BOOLEAN,
+ PRIMARY KEY (meta_key, sm)
+);
+ALTER TABLE sp_sm_metadata
+ ADD CONSTRAINT fk_sm_metadata_sm FOREIGN KEY (sm) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout_group (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ error_condition INTEGER,
+ error_condition_exp VARCHAR(512),
+ error_action INTEGER,
+ error_action_exp VARCHAR(512),
+ success_condition INTEGER NOT NULL,
+ success_condition_exp VARCHAR(512) NOT NULL,
+ success_action INTEGER NOT NULL,
+ success_action_exp VARCHAR(512),
+ status INTEGER NOT NULL,
+ parent BIGINT,
+ rollout BIGINT NOT NULL,
+ total_targets BIGINT,
+ target_percentage FLOAT,
+ target_filter VARCHAR(1024),
+ confirmation_required BOOLEAN,
+ is_dynamic BOOLEAN DEFAULT FALSE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout_group ON sp_rollout_group (name, rollout, tenant);
+ALTER TABLE sp_rollout_group
+ ADD CONSTRAINT fk_rollout_group_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_attributes (
+ target BIGINT NOT NULL,
+ attribute_value VARCHAR(128),
+ attribute_key VARCHAR(128) NOT NULL,
+ PRIMARY KEY (target, attribute_key)
+);
+ALTER TABLE sp_target_attributes
+ ADD CONSTRAINT fk_target_attributes_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_conf_status (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ target BIGINT NOT NULL,
+ initiator VARCHAR(64),
+ remark VARCHAR(512),
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ PRIMARY KEY (id)
+);
+ALTER TABLE sp_target_conf_status
+ ADD CONSTRAINT fk_target_conf_status_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ target BIGINT NOT NULL,
+ PRIMARY KEY (target, meta_key)
+);
+ALTER TABLE sp_target_metadata
+ ADD CONSTRAINT fk_target_metadata_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_target_tag (
+ target BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (target, tag)
+);
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_tag FOREIGN KEY (tag) REFERENCES sp_target_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ active BOOLEAN,
+ forced_time BIGINT,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target BIGINT NOT NULL,
+ rollout BIGINT,
+ rollout_group BIGINT,
+ action_type INTEGER NOT NULL,
+ maintenance_cron_schedule VARCHAR(40),
+ maintenance_duration VARCHAR(40),
+ maintenance_time_zone VARCHAR(40),
+ external_ref VARCHAR(512),
+ weight INTEGER NOT NULL,
+ initiated_by VARCHAR(64) NOT NULL,
+ last_action_status_code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_prim ON sp_action (tenant, id);
+CREATE INDEX sp_idx_action_01 ON sp_action (tenant, distribution_set);
+CREATE INDEX sp_idx_action_02 ON sp_action (tenant, target, active);
+CREATE INDEX sp_idx_action_external_ref ON sp_action (external_ref);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id);
+
+CREATE TABLE sp_rollout_target_group (
+ target BIGINT NOT NULL,
+ rollout_group BIGINT NOT NULL,
+ PRIMARY KEY (rollout_group, target)
+);
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id) ON DELETE CASCADE;
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status (
+ id BIGINT NOT NULL AUTO_INCREMENT,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ target_occurred_at BIGINT NOT NULL,
+ status INTEGER NOT NULL,
+ action BIGINT NOT NULL,
+ code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_status_prim ON sp_action_status (tenant, id);
+CREATE INDEX sp_idx_action_status_02 ON sp_action_status (tenant, action, status);
+CREATE INDEX sp_idx_action_status_03 ON sp_action_status (tenant, code);
+ALTER TABLE sp_action_status
+ ADD CONSTRAINT fk_action_status_action FOREIGN KEY (action) REFERENCES sp_action (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status_messages (
+ action_status BIGINT NOT NULL,
+ detail_message VARCHAR(512) NOT NULL
+);
+CREATE INDEX fk_action_status_messages_action_status ON sp_action_status_messages (action_status);
+ALTER TABLE sp_action_status_messages
+ ADD CONSTRAINT fk_action_status_messages_action_status FOREIGN KEY (action_status) REFERENCES sp_action_status (id) ON DELETE CASCADE;
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql
new file mode 100644
index 0000000000..fb81572d87
--- /dev/null
+++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql
@@ -0,0 +1,511 @@
+-- hawkbit 1.0.0 PostgreSQL database migration script baseline --
+
+CREATE TABLE SP_LOCK ( -- spring table --
+ LOCK_KEY CHAR(36) NOT NULL,
+ REGION VARCHAR(100) NOT NULL,
+ CLIENT_ID CHAR(36),
+ CREATED_DATE TIMESTAMP NOT NULL,
+ PRIMARY KEY (LOCK_KEY, REGION)
+);
+
+CREATE TABLE sp_distribution_set_tag (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_tag ON sp_distribution_set_tag (name, tenant);
+CREATE INDEX sp_idx_distribution_set_tag_prim ON sp_distribution_set_tag (tenant, id);
+CREATE INDEX sp_idx_distribution_set_tag_01 ON sp_distribution_set_tag (tenant, name);
+
+CREATE TABLE sp_distribution_set_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set_type_type_key ON sp_distribution_set_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_distribution_set_type_name ON sp_distribution_set_type (name, tenant);
+CREATE INDEX sp_idx_distribution_set_type_prim ON sp_distribution_set_type (tenant, id);
+CREATE INDEX sp_idx_distribution_set_type_01 ON sp_distribution_set_type (tenant, deleted);
+
+CREATE TABLE sp_software_module_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ deleted BOOLEAN,
+ type_key VARCHAR(64) NOT NULL,
+ max_ds_assignments INTEGER NOT NULL,
+ min_artifacts INTEGER DEFAULT 0 NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module_type_type_key ON sp_software_module_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_software_module_type_name ON sp_software_module_type (name, tenant);
+CREATE INDEX sp_idx_software_module_type_prim ON sp_software_module_type (tenant, id);
+CREATE INDEX sp_idx_software_module_type_01 ON sp_software_module_type (tenant, deleted);
+
+CREATE TABLE sp_target_tag (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_tag ON sp_target_tag (name, tenant);
+CREATE INDEX sp_idx_target_tag_prim ON sp_target_tag (tenant, id);
+CREATE INDEX sp_idx_target_tag_01 ON sp_target_tag (tenant, name);
+
+CREATE TABLE sp_target_type (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ colour VARCHAR(16),
+ type_key VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_type_key ON sp_target_type (type_key, tenant);
+CREATE UNIQUE INDEX uk_target_name ON sp_target_type (name, tenant);
+CREATE INDEX sp_idx_target_type_prim ON sp_target_type (tenant, id);
+
+CREATE TABLE sp_tenant_configuration (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ conf_key VARCHAR(128) NOT NULL,
+ conf_value VARCHAR(512) NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
+
+CREATE TABLE sp_distribution_set (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ required_migration_step BOOLEAN,
+ ds_type BIGINT NOT NULL,
+ valid BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_distribution_set ON sp_distribution_set (tenant, name, version, ds_type);
+CREATE INDEX sp_idx_distribution_set_prim ON sp_distribution_set (tenant, id);
+CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set (tenant, deleted);
+ALTER TABLE sp_distribution_set
+ ADD CONSTRAINT fk_distribution_set_ds_type FOREIGN KEY (ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_tenant (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ default_ds_type BIGINT NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_tenant ON sp_tenant (tenant);
+CREATE INDEX sp_idx_tenant_prim ON sp_tenant (tenant, id);
+ALTER TABLE sp_tenant
+ ADD CONSTRAINT fk_sp_tenant_default_ds_type FOREIGN KEY (default_ds_type) REFERENCES sp_distribution_set_type (id);
+
+CREATE TABLE sp_ds_type_element (
+ mandatory BOOLEAN,
+ distribution_set_type BIGINT NOT NULL,
+ software_module_type BIGINT NOT NULL,
+ PRIMARY KEY (distribution_set_type, software_module_type)
+);
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_type_element
+ ADD CONSTRAINT fk_ds_type_element_software_module_type FOREIGN KEY (software_module_type) REFERENCES sp_software_module_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_software_module (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ version VARCHAR(64) NOT NULL,
+ deleted BOOLEAN,
+ vendor VARCHAR(256),
+ sm_type BIGINT NOT NULL,
+ encrypted BOOLEAN,
+ locked BOOLEAN DEFAULT TRUE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_software_module ON sp_software_module (sm_type, name, version, tenant);
+CREATE INDEX sp_idx_software_module_01 ON sp_software_module (tenant, deleted, name, version);
+CREATE INDEX sp_idx_software_module_02 ON sp_software_module (tenant, deleted, sm_type);
+CREATE INDEX sp_idx_software_module_prim ON sp_software_module (tenant, id);
+ALTER TABLE sp_software_module
+ ADD CONSTRAINT fk_software_module_sm_type FOREIGN KEY (sm_type) REFERENCES sp_software_module_type (id);
+
+CREATE TABLE sp_target_type_ds_type (
+ target_type BIGINT NOT NULL,
+ distribution_set_type BIGINT NOT NULL,
+ PRIMARY KEY (target_type, distribution_set_type)
+);
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_distribution_set_type FOREIGN KEY (distribution_set_type) REFERENCES sp_distribution_set_type (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_type_ds_type
+ ADD CONSTRAINT fk_target_type_ds_type_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ ds BIGINT NOT NULL,
+ PRIMARY KEY (ds, meta_key)
+);
+ALTER TABLE sp_ds_metadata
+ ADD CONSTRAINT fk_ds_metadata_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_tag (
+ ds BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (ds, tag)
+);
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_ds FOREIGN KEY (ds) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_tag
+ ADD CONSTRAINT fk_ds_tag_tag FOREIGN KEY (tag) REFERENCES sp_distribution_set_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ last_check BIGINT,
+ group_theshold REAL,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target_filter VARCHAR(1024),
+ forced_time BIGINT,
+ total_targets BIGINT,
+ rollout_groups_created BIGINT,
+ start_at BIGINT,
+ deleted BOOLEAN,
+ action_type INTEGER NOT NULL,
+ approval_decided_by VARCHAR(64),
+ approval_remark VARCHAR(255),
+ weight INTEGER NOT NULL,
+ access_control_context VARCHAR(4096),
+ is_dynamic BOOLEAN,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout ON sp_rollout (name, tenant);
+CREATE INDEX sp_idx_rollout_status_tenant ON sp_rollout (tenant, status);
+ALTER TABLE sp_rollout
+ ADD CONSTRAINT fk_rollout_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+
+CREATE TABLE sp_target (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ controller_id VARCHAR(256) NOT NULL,
+ sec_token VARCHAR(128) NOT NULL,
+ assigned_distribution_set BIGINT,
+ install_date BIGINT,
+ address VARCHAR(512),
+ last_target_query BIGINT,
+ request_controller_attributes BOOLEAN NOT NULL,
+ installed_distribution_set BIGINT,
+ update_status INTEGER NOT NULL,
+ target_type BIGINT,
+ target_group VARCHAR(256),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_controller_id ON sp_target (controller_id, tenant);
+CREATE INDEX sp_idx_target_01 ON sp_target (tenant, name, assigned_distribution_set);
+CREATE INDEX sp_idx_target_03 ON sp_target (tenant, controller_id, assigned_distribution_set);
+CREATE INDEX sp_idx_target_04 ON sp_target (tenant, created_at);
+CREATE INDEX sp_idx_target_prim ON sp_target (tenant, id);
+CREATE INDEX sp_idx_target_05 ON sp_target (tenant, last_modified_at);
+CREATE INDEX sp_idx_target_group ON sp_target (tenant, target_group);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_assign_ds FOREIGN KEY (assigned_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_inst_ds FOREIGN KEY (installed_distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_target
+ ADD CONSTRAINT fk_target_relation_target_type FOREIGN KEY (target_type) REFERENCES sp_target_type (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_target_filter_query (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ name VARCHAR(128) NOT NULL,
+ query VARCHAR(1024) NOT NULL,
+ auto_assign_distribution_set BIGINT,
+ auto_assign_action_type INTEGER,
+ auto_assign_weight INTEGER NOT NULL,
+ auto_assign_initiated_by VARCHAR(64),
+ confirmation_required BOOLEAN,
+ access_control_context VARCHAR(4096),
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);
+ALTER TABLE sp_target_filter_query
+ ADD CONSTRAINT fk_target_filter_query_auto_assign_distribution_set FOREIGN KEY (auto_assign_distribution_set) REFERENCES sp_distribution_set (id) ON DELETE SET NULL;
+
+CREATE TABLE sp_artifact (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ md5_hash VARCHAR(32),
+ file_size BIGINT,
+ provided_file_name VARCHAR(256),
+ sha1_hash VARCHAR(40) NOT NULL,
+ software_module BIGINT NOT NULL,
+ sha256_hash CHAR(64),
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_artifact_prim ON sp_artifact (tenant, id);
+CREATE INDEX sp_idx_artifact_01 ON sp_artifact (tenant, software_module);
+CREATE INDEX sp_idx_artifact_02 ON sp_artifact (tenant, sha1_hash);
+ALTER TABLE sp_artifact
+ ADD CONSTRAINT fk_artifact_software_module FOREIGN KEY (software_module) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_ds_sm (
+ ds_id BIGINT NOT NULL,
+ sm_id BIGINT NOT NULL,
+ PRIMARY KEY (ds_id, sm_id)
+);
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_ds_id FOREIGN KEY (ds_id) REFERENCES sp_distribution_set (id) ON DELETE CASCADE;
+ALTER TABLE sp_ds_sm
+ ADD CONSTRAINT fk_ds_sm_sm_id FOREIGN KEY (sm_id) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_sm_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ sm BIGINT NOT NULL,
+ target_visible BOOLEAN,
+ PRIMARY KEY (meta_key, sm)
+);
+ALTER TABLE sp_sm_metadata
+ ADD CONSTRAINT fk_sm_metadata_sm FOREIGN KEY (sm) REFERENCES sp_software_module (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_rollout_group (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ description VARCHAR(512),
+ name VARCHAR(128) NOT NULL,
+ error_condition INTEGER,
+ error_condition_exp VARCHAR(512),
+ error_action INTEGER,
+ error_action_exp VARCHAR(512),
+ success_condition INTEGER NOT NULL,
+ success_condition_exp VARCHAR(512) NOT NULL,
+ success_action INTEGER NOT NULL,
+ success_action_exp VARCHAR(512),
+ status INTEGER NOT NULL,
+ parent BIGINT,
+ rollout BIGINT NOT NULL,
+ total_targets BIGINT,
+ target_percentage REAL,
+ target_filter VARCHAR(1024),
+ confirmation_required BOOLEAN,
+ is_dynamic BOOLEAN DEFAULT FALSE NOT NULL,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX uk_rollout_group ON sp_rollout_group (name, rollout, tenant);
+ALTER TABLE sp_rollout_group
+ ADD CONSTRAINT fk_rollout_group_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_attributes (
+ target BIGINT NOT NULL,
+ attribute_value VARCHAR(128),
+ attribute_key VARCHAR(128) NOT NULL,
+ PRIMARY KEY (target, attribute_key)
+);
+CREATE INDEX sp_idx_target_attributes_target_id ON sp_target_attributes (target);
+ALTER TABLE sp_target_attributes
+ ADD CONSTRAINT fk_target_attributes_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_conf_status (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ target BIGINT NOT NULL,
+ initiator VARCHAR(64),
+ remark VARCHAR(512),
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ PRIMARY KEY (id)
+);
+ALTER TABLE sp_target_conf_status
+ ADD CONSTRAINT fk_target_conf_status_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_metadata (
+ meta_key VARCHAR(128) NOT NULL,
+ meta_value VARCHAR(4000),
+ target BIGINT NOT NULL,
+ PRIMARY KEY (target, meta_key)
+);
+ALTER TABLE sp_target_metadata
+ ADD CONSTRAINT fk_target_metadata_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_target_target_tag (
+ target BIGINT NOT NULL,
+ tag BIGINT NOT NULL,
+ PRIMARY KEY (target, tag)
+);
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_target_target_tag
+ ADD CONSTRAINT fk_target_target_tag_tag FOREIGN KEY (tag) REFERENCES sp_target_tag (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ active BOOLEAN,
+ forced_time BIGINT,
+ status INTEGER NOT NULL,
+ distribution_set BIGINT NOT NULL,
+ target BIGINT NOT NULL,
+ rollout BIGINT,
+ rollout_group BIGINT,
+ action_type INTEGER NOT NULL,
+ maintenance_cron_schedule VARCHAR(40),
+ maintenance_duration VARCHAR(40),
+ maintenance_time_zone VARCHAR(40),
+ external_ref VARCHAR(512),
+ weight INTEGER NOT NULL,
+ initiated_by VARCHAR(64) NOT NULL,
+ last_action_status_code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_prim ON sp_action (tenant, id);
+CREATE INDEX sp_idx_action_01 ON sp_action (tenant, distribution_set);
+CREATE INDEX sp_idx_action_02 ON sp_action (tenant, target, active);
+CREATE INDEX sp_idx_action_external_ref ON sp_action (external_ref);
+CREATE INDEX sp_idx_action_target ON sp_action (target);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_distribution_set FOREIGN KEY (distribution_set) REFERENCES sp_distribution_set (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id);
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+ALTER TABLE sp_action
+ ADD CONSTRAINT fk_action_rollout FOREIGN KEY (rollout) REFERENCES sp_rollout (id);
+
+CREATE TABLE sp_rollout_target_group (
+ target BIGINT NOT NULL,
+ rollout_group BIGINT NOT NULL,
+ PRIMARY KEY (rollout_group, target)
+);
+CREATE INDEX sp_idx_rollout_target_group_target ON sp_rollout_target_group (target);
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_rollout_group FOREIGN KEY (rollout_group) REFERENCES sp_rollout_group (id) ON DELETE CASCADE;
+ALTER TABLE sp_rollout_target_group
+ ADD CONSTRAINT fk_rollout_target_group_target FOREIGN KEY (target) REFERENCES sp_target (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status (
+ id BIGINT GENERATED BY DEFAULT AS IDENTITY,
+ created_at BIGINT,
+ created_by VARCHAR(64),
+ last_modified_at BIGINT,
+ last_modified_by VARCHAR(64),
+ optlock_revision BIGINT,
+ tenant VARCHAR(40) NOT NULL,
+ target_occurred_at BIGINT NOT NULL,
+ status INTEGER NOT NULL,
+ action BIGINT NOT NULL,
+ code INTEGER,
+ PRIMARY KEY (id)
+);
+CREATE INDEX sp_idx_action_status_prim ON sp_action_status (tenant, id);
+CREATE INDEX sp_idx_action_status_02 ON sp_action_status (tenant, action, status);
+CREATE INDEX sp_idx_action_status_03 ON sp_action_status (tenant, code);
+ALTER TABLE sp_action_status
+ ADD CONSTRAINT fk_action_status_action FOREIGN KEY (action) REFERENCES sp_action (id) ON DELETE CASCADE;
+
+CREATE TABLE sp_action_status_messages (
+ action_status BIGINT NOT NULL,
+ detail_message VARCHAR(512) NOT NULL
+);
+CREATE INDEX fk_action_status_messages_action_status ON sp_action_status_messages (action_status);
+ALTER TABLE sp_action_status_messages
+ ADD CONSTRAINT fk_action_status_messages_action_status FOREIGN KEY (action_status) REFERENCES sp_action_status (id) ON DELETE CASCADE;
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_35__sm_type_min_artifacts__POSTGRESQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_35__sm_type_min_artifacts__POSTGRESQL.sql
index 0d72136328..182c4bd11b 100644
--- a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_35__sm_type_min_artifacts__POSTGRESQL.sql
+++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_35__sm_type_min_artifacts__POSTGRESQL.sql
@@ -1,4 +1,4 @@
ALTER TABLE sp_software_module_type ADD COLUMN min_artifacts integer default 0 NOT NULL;
-DROP INDEX sp_idx_distribution_set_01;
+DROP INDEX sp_idx_distribution_set_01_sp_distribution_set;
CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set USING BTREE (tenant, deleted);
ALTER TABLE sp_distribution_set DROP COLUMN complete;
\ No newline at end of file
diff --git a/intellij_codeformatter.xml b/intellij_codeformatter.xml
index 628f202ea9..301507c1df 100644
--- a/intellij_codeformatter.xml
+++ b/intellij_codeformatter.xml
@@ -1,429 +1,447 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GETTERS_AND_SETTERS
- KEEP
-
-
- OVERRIDDEN_METHODS
- KEEP
-
-
-
-
-
-
-
- true
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- true
- true
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
- true
- method
- true
-
-
-
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GETTERS_AND_SETTERS
+ KEEP
+
+
+ OVERRIDDEN_METHODS
+ KEEP
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+ true
+ method
+ true
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file