diff --git a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/DatasourceStructure.java b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/DatasourceStructure.java
index f2c5144060..99eb13633b 100644
--- a/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/DatasourceStructure.java
+++ b/app/server/appsmith-interfaces/src/main/java/com/appsmith/external/models/DatasourceStructure.java
@@ -8,6 +8,7 @@ import java.util.List;
@Data
@NoArgsConstructor
+@AllArgsConstructor
public class DatasourceStructure {
List
tables;
diff --git a/app/server/appsmith-plugins/dynamoPlugin/src/main/java/com/external/plugins/DynamoPlugin.java b/app/server/appsmith-plugins/dynamoPlugin/src/main/java/com/external/plugins/DynamoPlugin.java
index e9f05096db..883db8e1f2 100644
--- a/app/server/appsmith-plugins/dynamoPlugin/src/main/java/com/external/plugins/DynamoPlugin.java
+++ b/app/server/appsmith-plugins/dynamoPlugin/src/main/java/com/external/plugins/DynamoPlugin.java
@@ -6,6 +6,7 @@ import com.appsmith.external.models.ActionConfiguration;
import com.appsmith.external.models.ActionExecutionResult;
import com.appsmith.external.models.DBAuth;
import com.appsmith.external.models.DatasourceConfiguration;
+import com.appsmith.external.models.DatasourceStructure;
import com.appsmith.external.models.DatasourceTestResult;
import com.appsmith.external.models.Endpoint;
import com.appsmith.external.plugins.BasePlugin;
@@ -29,6 +30,7 @@ import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClientBuilder;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbResponse;
+import software.amazon.awssdk.services.dynamodb.model.ListTablesResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
@@ -38,6 +40,7 @@ import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -202,6 +205,28 @@ public class DynamoPlugin extends BasePlugin {
)
.subscribeOn(scheduler);
}
+
+ @Override
+ public Mono getStructure(DynamoDbClient ddb, DatasourceConfiguration datasourceConfiguration) {
+ return Mono.fromCallable(() -> {
+ final ListTablesResponse listTablesResponse = ddb.listTables();
+
+ List tables = new ArrayList<>();
+ for (final String tableName : listTablesResponse.tableNames()) {
+ tables.add(new DatasourceStructure.Table(
+ DatasourceStructure.TableType.TABLE,
+ tableName,
+ Collections.emptyList(),
+ Collections.emptyList(),
+ Collections.emptyList()
+ ));
+ }
+
+ return new DatasourceStructure(tables);
+
+ }).subscribeOn(scheduler);
+ }
+
}
private static String toLowerCamelCase(String action) {
diff --git a/app/server/appsmith-plugins/dynamoPlugin/src/test/java/com/external/plugins/DynamoPluginTest.java b/app/server/appsmith-plugins/dynamoPlugin/src/test/java/com/external/plugins/DynamoPluginTest.java
index 65ffd2675f..39b6c03dae 100644
--- a/app/server/appsmith-plugins/dynamoPlugin/src/test/java/com/external/plugins/DynamoPluginTest.java
+++ b/app/server/appsmith-plugins/dynamoPlugin/src/test/java/com/external/plugins/DynamoPluginTest.java
@@ -4,6 +4,7 @@ import com.appsmith.external.models.ActionConfiguration;
import com.appsmith.external.models.ActionExecutionResult;
import com.appsmith.external.models.DBAuth;
import com.appsmith.external.models.DatasourceConfiguration;
+import com.appsmith.external.models.DatasourceStructure;
import com.appsmith.external.models.Endpoint;
import lombok.extern.log4j.Log4j;
import org.junit.BeforeClass;
@@ -29,6 +30,7 @@ import java.net.URI;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -91,8 +93,6 @@ public class DynamoPluginTest {
))
.build());
- System.out.println(ddb.listTables());
-
Endpoint endpoint = new Endpoint();
endpoint.setHost(host);
endpoint.setPort(port.longValue());
@@ -238,4 +238,24 @@ public class DynamoPluginTest {
.verifyComplete();
}
+ @Test
+ public void testStructure() {
+ final Mono structureMono = pluginExecutor
+ .datasourceCreate(dsConfig)
+ .flatMap(conn -> pluginExecutor.getStructure(conn, dsConfig));
+
+ StepVerifier.create(structureMono)
+ .assertNext(structure -> {
+ assertNotNull(structure);
+ assertNotNull(structure.getTables());
+ assertEquals(
+ List.of("cities"),
+ structure.getTables().stream()
+ .map(DatasourceStructure.Table::getName)
+ .collect(Collectors.toList())
+ );
+ })
+ .verifyComplete();
+ }
+
}