From 7ef3f003dd3a6196732b2b0c65a682b463e26dee Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 28 Jan 2020 12:42:14 -0800 Subject: [PATCH] handle import errors (#8905) --- extensions/import/package.json | 2 +- .../src/wizard/pages/prosePreviewPage.ts | 53 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/extensions/import/package.json b/extensions/import/package.json index 7854d71faf..efad8597a3 100644 --- a/extensions/import/package.json +++ b/extensions/import/package.json @@ -2,7 +2,7 @@ "name": "import", "displayName": "SQL Server Import", "description": "SQL Server Import for Azure Data Studio supports importing CSV or JSON files into SQL Server.", - "version": "0.13.0", + "version": "0.13.1", "publisher": "Microsoft", "preview": true, "engines": { diff --git a/extensions/import/src/wizard/pages/prosePreviewPage.ts b/extensions/import/src/wizard/pages/prosePreviewPage.ts index 0e777ea57c..62e4fb3439 100644 --- a/extensions/import/src/wizard/pages/prosePreviewPage.ts +++ b/extensions/import/src/wizard/pages/prosePreviewPage.ts @@ -71,7 +71,14 @@ export class ProsePreviewPage extends ImportPage { async onPageEnter(): Promise { this.loading.loading = true; - let proseResult = await this.handleProse(); + let proseResult: boolean; + let error: string; + try { + proseResult = await this.handleProse(); + } catch (ex) { + error = ex.toString(); + } + this.loading.loading = false; if (proseResult) { await this.populateTable(this.model.proseDataPreview, this.model.proseColumns.map(c => c.columnName)); @@ -84,7 +91,7 @@ export class ProsePreviewPage extends ImportPage { await this.populateTable([], []); this.isSuccess = false; if (this.form) { - this.resultTextComponent.value = this.failureTitle; + this.resultTextComponent.value = this.failureTitle + '\n' + (error ?? ''); } return false; } @@ -113,32 +120,32 @@ export class ProsePreviewPage extends ImportPage { } private async handleProse(): Promise { - return this.provider.sendPROSEDiscoveryRequest({ + const response = await this.provider.sendPROSEDiscoveryRequest({ filePath: this.model.filePath, tableName: this.model.table, schemaName: this.model.schema, fileType: this.model.fileType - }).then((result) => { - if (result) { - this.model.proseDataPreview = null; - if (result.dataPreview) { - this.model.proseDataPreview = result.dataPreview; - } - this.model.proseColumns = []; - if (result.columnInfo) { - result.columnInfo.forEach((column) => { - this.model.proseColumns.push({ - columnName: column.name, - dataType: column.sqlType, - primaryKey: false, - nullable: column.isNullable - }); - }); - return true; - } - } - return false; }); + + this.model.proseDataPreview = null; + if (response.dataPreview) { + this.model.proseDataPreview = response.dataPreview; + } + + this.model.proseColumns = []; + if (response.columnInfo) { + response.columnInfo.forEach((column) => { + this.model.proseColumns.push({ + columnName: column.name, + dataType: column.sqlType, + primaryKey: false, + nullable: column.isNullable + }); + }); + return true; + } + + return false; } private async populateTable(tableData: string[][], columnHeaders: string[]) {