From 43ffedcceb4670bd86c1a85814154f9970433fa0 Mon Sep 17 00:00:00 2001 From: Zihan Dai <99155080+PDGGK@users.noreply.github.com> Date: Fri, 27 Mar 2026 21:20:28 +1100 Subject: [PATCH] debezium/dbz#1245 Add description field to connections API payload Signed-off-by: Zihan Dai <99155080+PDGGK@users.noreply.github.com> --- .../platform/data/model/ConnectionEntity.java | 10 +++++ .../platform/domain/views/Connection.java | 4 ++ .../V3.5.0__add_connection_description.sql | 2 + .../platform/api/ConnectionResourceIT.java | 40 +++++++++++++++++++ .../src/__mocks__/data/Connections.json | 2 + debezium-platform-stage/src/apis/apis.tsx | 2 + 6 files changed, 60 insertions(+) create mode 100644 debezium-platform-conductor/src/main/resources/db/migration/V3.5.0__add_connection_description.sql diff --git a/debezium-platform-conductor/src/main/java/io/debezium/platform/data/model/ConnectionEntity.java b/debezium-platform-conductor/src/main/java/io/debezium/platform/data/model/ConnectionEntity.java index f14a1ac6..8546612f 100644 --- a/debezium-platform-conductor/src/main/java/io/debezium/platform/data/model/ConnectionEntity.java +++ b/debezium-platform-conductor/src/main/java/io/debezium/platform/data/model/ConnectionEntity.java @@ -31,6 +31,8 @@ public class ConnectionEntity { @Column(unique = true, nullable = false) private String name; + private String description; + @Enumerated(EnumType.STRING) @Column(nullable = false) private Type type; @@ -87,6 +89,14 @@ public void setName(String name) { this.name = name; } + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + public Type getType() { return type; } diff --git a/debezium-platform-conductor/src/main/java/io/debezium/platform/domain/views/Connection.java b/debezium-platform-conductor/src/main/java/io/debezium/platform/domain/views/Connection.java index 0b9b43e3..03fcede4 100644 --- a/debezium-platform-conductor/src/main/java/io/debezium/platform/domain/views/Connection.java +++ b/debezium-platform-conductor/src/main/java/io/debezium/platform/domain/views/Connection.java @@ -22,6 +22,10 @@ public interface Connection extends NamedView { void setName(String name); + String getDescription(); + + void setDescription(String description); + ConnectionEntity.Type getType(); void setType(ConnectionEntity.Type type); diff --git a/debezium-platform-conductor/src/main/resources/db/migration/V3.5.0__add_connection_description.sql b/debezium-platform-conductor/src/main/resources/db/migration/V3.5.0__add_connection_description.sql new file mode 100644 index 00000000..c2189eba --- /dev/null +++ b/debezium-platform-conductor/src/main/resources/db/migration/V3.5.0__add_connection_description.sql @@ -0,0 +1,2 @@ +-- DBZ-1245 Add description field to connection table +alter table if exists connection add column description varchar(255); diff --git a/debezium-platform-conductor/src/test/java/io/debezium/platform/api/ConnectionResourceIT.java b/debezium-platform-conductor/src/test/java/io/debezium/platform/api/ConnectionResourceIT.java index bbbe4a8c..eb5bcadc 100644 --- a/debezium-platform-conductor/src/test/java/io/debezium/platform/api/ConnectionResourceIT.java +++ b/debezium-platform-conductor/src/test/java/io/debezium/platform/api/ConnectionResourceIT.java @@ -8,6 +8,7 @@ import static io.restassured.RestAssured.given; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; import org.junit.jupiter.api.Test; @@ -21,6 +22,7 @@ private String createTestConnectionJson(String nameSuffix) { return """ { "name": "test-connection-%s", + "description": "Test connection description", "type": "POSTGRESQL", "config": { "host": "localhost", @@ -37,6 +39,7 @@ private String createUpdatedConnectionJson(Integer id, String nameSuffix) { { "id": %d, "name": "updated-connection-%s", + "description": "Updated connection description", "type": "POSTGRESQL", "config": { "host": "updated-host", @@ -74,12 +77,47 @@ public void testCreateConnection() { .header("Location", notNullValue()) .body("id", notNullValue()) .body("name", is("test-connection-" + nameSuffix)) + .body("description", is("Test connection description")) .body("type", is("POSTGRESQL")) .body("config.host", is("localhost")) .body("config.port", is(5432)) .body("config.username", is("testuser")); } + @Test + public void testCreateConnection_WithoutDescription() { + String nameSuffix = String.valueOf(System.currentTimeMillis()); + String json = """ + { + "name": "test-connection-no-desc-%s", + "type": "POSTGRESQL", + "config": { + "host": "localhost", + "port": 5432, + "username": "testuser", + "password": "testpass" + } + } + """.formatted(nameSuffix); + + Integer connectionId = given() + .contentType(ContentType.JSON) + .body(json) + .when() + .post("api/connections") + .then() + .statusCode(201) + .contentType(ContentType.JSON) + .body("id", notNullValue()) + .body("name", is("test-connection-no-desc-" + nameSuffix)) + .body("description", nullValue()) + .body("type", is("POSTGRESQL")) + .extract() + .path("id"); + + cleanUp(connectionId); + } + @Test public void testGetConnectionById() { String nameSuffix = String.valueOf(System.currentTimeMillis()); @@ -103,6 +141,7 @@ public void testGetConnectionById() { .statusCode(200) .body("id", is(connectionId.intValue())) .body("name", is("test-connection-" + nameSuffix)) + .body("description", is("Test connection description")) .body("type", is("POSTGRESQL")) .body("config.host", is("localhost")) .body("config.port", is(5432)) @@ -149,6 +188,7 @@ public void testUpdateConnection() { .statusCode(200) .body("id", is(connectionId.intValue())) .body("name", is("updated-connection-" + updatedNameSuffix)) + .body("description", is("Updated connection description")) .body("config.host", is("updated-host")) .body("config.port", is(5433)) .body("config.username", is("updateduser")); diff --git a/debezium-platform-stage/src/__mocks__/data/Connections.json b/debezium-platform-stage/src/__mocks__/data/Connections.json index 6f30d728..fa828386 100644 --- a/debezium-platform-stage/src/__mocks__/data/Connections.json +++ b/debezium-platform-stage/src/__mocks__/data/Connections.json @@ -9,6 +9,7 @@ "username": "debezium", "additional-key": "additional-val" }, + "description": "MariaDB connection for testing", "name": "mariaconnection", "type": "MARIADB" }, @@ -17,6 +18,7 @@ "config": { "test-value": "test-key" }, + "description": "Kinesis connection for streaming", "name": "kinesis-connection", "type": "AMAZON_KINESIS" } diff --git a/debezium-platform-stage/src/apis/apis.tsx b/debezium-platform-stage/src/apis/apis.tsx index 88b95e0b..87526cc8 100644 --- a/debezium-platform-stage/src/apis/apis.tsx +++ b/debezium-platform-stage/src/apis/apis.tsx @@ -87,6 +87,7 @@ export type ConnectionPayload = { type: string; id?: string; config: ConnectionUnknownConfig | ConnectionAdditionalConfig; + description?: string; name: string; }; @@ -132,6 +133,7 @@ export type ConnectionSchema = { export type Connection = { type: string; config: ConnectionUnknownConfig; + description?: string; name: string; id: number; };