From 63741b08d6be114ead67cbf052173a69dcbb4e80 Mon Sep 17 00:00:00 2001 From: Viktor Seifert Date: Mon, 6 Mar 2023 11:55:14 +0100 Subject: [PATCH] RED-5481: Split jdbc-url field into multiple fields Replaced the single jdbc-url field with multiple fields for each url part. This makes it possible to use just a part of the db-connection. We need the schema for multitenancy. --- .../entity/DatabaseConnectionEntity.java | 27 ++++++++++++ .../multitenancy/entity/TenantEntity.java | 6 ++- .../db/changelog/db.changelog-master.yaml | 2 + .../3-detailed-db-connection.changelog.yaml | 43 +++++++++++++++++++ 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/DatabaseConnectionEntity.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/master/3-detailed-db-connection.changelog.yaml diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/DatabaseConnectionEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/DatabaseConnectionEntity.java new file mode 100644 index 000000000..986a671cc --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/DatabaseConnectionEntity.java @@ -0,0 +1,27 @@ +package com.iqser.red.service.persistence.management.v1.processor.multitenancy.entity; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.NoArgsConstructor; + +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Embeddable +public class DatabaseConnectionEntity { + + @Column + private String jdbcDriver; + @Column + private String jdbcHost; + @Column + private String jdbcPort; + @Column + private String jdbcDatabase; + @Column + private String jdbcSchema; + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/TenantEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/TenantEntity.java index 8c71c923f..1a7b761e0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/TenantEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/multitenancy/entity/TenantEntity.java @@ -1,6 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.multitenancy.entity; import javax.persistence.Column; +import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @@ -25,10 +26,11 @@ public class TenantEntity { @Column private String guid; @Column - private String jdbcUrl; - @Column private String username; @Column private String password; + @Embedded + private DatabaseConnectionEntity databaseConnection; + } \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index f829d81b8..8a632ee7b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -3,3 +3,5 @@ databaseChangeLog: file: db/changelog/master/1-initial-schema.changelog.yaml - include: file: db/changelog/master/2-quartz.changelog.yaml + - include: + file: db/changelog/master/3-detailed-db-connection.changelog.yaml diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/master/3-detailed-db-connection.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/master/3-detailed-db-connection.changelog.yaml new file mode 100644 index 000000000..2f51f0fa7 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/master/3-detailed-db-connection.changelog.yaml @@ -0,0 +1,43 @@ +databaseChangeLog: + - changeSet: + id: detailed-db-connection + author: viktorseifert + changes: + - deleteColumn: + columns: + - column: + name: jdbc_url + tableName: tenant + - addColumn: + columns: + - column: + name: jdbc_driver + type: VARCHAR(255) + constraints: + unique: true + uniqueConstraintName: UC_TENANT_CONNECTION + - column: + name: jdbc_host + type: VARCHAR(255) + constraints: + unique: true + uniqueConstraintName: UC_TENANT_CONNECTION + - column: + name: jdbc_port + type: VARCHAR(255) + constraints: + unique: true + uniqueConstraintName: UC_TENANT_CONNECTION + - column: + name: jdbc_database + type: VARCHAR(255) + constraints: + unique: true + uniqueConstraintName: UC_TENANT_CONNECTION + - column: + name: jdbc_schema + type: VARCHAR(255) + constraints: + unique: true + uniqueConstraintName: UC_TENANT_CONNECTION + tableName: tenant \ No newline at end of file