diff --git a/server/controller/src/main/java/ai/starwhale/mlops/api/DataStoreController.java b/server/controller/src/main/java/ai/starwhale/mlops/api/DataStoreController.java index 5b21057f52..9857abb757 100644 --- a/server/controller/src/main/java/ai/starwhale/mlops/api/DataStoreController.java +++ b/server/controller/src/main/java/ai/starwhale/mlops/api/DataStoreController.java @@ -151,6 +151,7 @@ public ResponseEntity> scanTable(ScanTableRequest .limit(request.getLimit()) .keepNone(request.isKeepNone()) .rawResult(request.isRawResult()) + .ignoreNonExistingTable(request.isIgnoreNonExistingTable()) .build()); return ResponseEntity.ok(Code.success.asResponse(RecordListVo.builder() .columnTypes(recordList.getColumnTypeMap()) diff --git a/server/controller/src/main/java/ai/starwhale/mlops/api/protocol/datastore/ScanTableRequest.java b/server/controller/src/main/java/ai/starwhale/mlops/api/protocol/datastore/ScanTableRequest.java index dff076f412..fa83fce205 100644 --- a/server/controller/src/main/java/ai/starwhale/mlops/api/protocol/datastore/ScanTableRequest.java +++ b/server/controller/src/main/java/ai/starwhale/mlops/api/protocol/datastore/ScanTableRequest.java @@ -30,4 +30,5 @@ public class ScanTableRequest { private int limit = -1; private boolean keepNone; private boolean rawResult; + private boolean ignoreNonExistingTable; } diff --git a/server/controller/src/test/java/ai/starwhale/mlops/api/DataStoreControllerTest.java b/server/controller/src/test/java/ai/starwhale/mlops/api/DataStoreControllerTest.java index 6530cd6582..c0cfdf9a48 100644 --- a/server/controller/src/test/java/ai/starwhale/mlops/api/DataStoreControllerTest.java +++ b/server/controller/src/test/java/ai/starwhale/mlops/api/DataStoreControllerTest.java @@ -630,6 +630,27 @@ public void testNullTableName() { ""); } + @Test + public void testTableNotExists() { + this.req.setTableName("table not exists"); + assertThrows(SwValidationException.class, + () -> DataStoreControllerTest.this.controller.queryTable(this.req), + ""); + } + + @Test + public void testTableNotExistsIgnore() { + this.req.setTableName("table not exists"); + this.req.setIgnoreNonExistingTable(true); + + var resp = DataStoreControllerTest.this.controller.queryTable(this.req); + assertThat("test", resp.getStatusCode().is2xxSuccessful(), is(true)); + assertThat("test", + Objects.requireNonNull(resp.getBody()).getData().getColumnTypes().isEmpty()); + assertThat("test", + Objects.requireNonNull(resp.getBody()).getData().getRecords().isEmpty()); + } + @Test public void testNullColumnName() { this.req.getColumns().get(0).setColumnName(null); @@ -1158,6 +1179,15 @@ public void testInvalidTableName() { ""); } + @Test + public void testTableNotExistsIgnore() { + this.req.getTables().get(0).setTableName("invalid"); + this.req.setIgnoreNonExistingTable(true); + + var resp = DataStoreControllerTest.this.controller.scanTable(this.req); + assertThat("test", resp.getStatusCode().is2xxSuccessful(), is(true)); + } + @Test public void testNullColumn() { this.req.getTables().get(0).setColumns(