Add datasource structure support for DynamoDB (#2919)
This commit is contained in:
parent
8c72e901ee
commit
ed1c926c8a
|
|
@ -8,6 +8,7 @@ import java.util.List;
|
|||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DatasourceStructure {
|
||||
|
||||
List<Table> tables;
|
||||
|
|
|
|||
|
|
@ -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<DatasourceStructure> getStructure(DynamoDbClient ddb, DatasourceConfiguration datasourceConfiguration) {
|
||||
return Mono.fromCallable(() -> {
|
||||
final ListTablesResponse listTablesResponse = ddb.listTables();
|
||||
|
||||
List<DatasourceStructure.Table> 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) {
|
||||
|
|
|
|||
|
|
@ -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<DatasourceStructure> 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user