diff --git a/src/sql/azdata.d.ts b/src/sql/azdata.d.ts index e7841d69ff..4995fa99fc 100644 --- a/src/sql/azdata.d.ts +++ b/src/sql/azdata.d.ts @@ -599,6 +599,7 @@ declare module 'azdata' { // List Databases Request ---------------------------------------------------------------------- export interface ListDatabasesResult { databaseNames: Array; + databases?: Array; } /** @@ -725,7 +726,7 @@ declare module 'azdata' { export interface MetadataProvider extends DataProvider { getMetadata(connectionUri: string): Thenable; - getDatabases(connectionUri: string): Thenable; + getDatabases(connectionUri: string): Thenable; getTableInfo(connectionUri: string, metadata: ObjectMetadata): Thenable; diff --git a/src/sql/platform/metadata/common/metadataService.ts b/src/sql/platform/metadata/common/metadataService.ts index 697f0e055c..7ae1d4f819 100644 --- a/src/sql/platform/metadata/common/metadataService.ts +++ b/src/sql/platform/metadata/common/metadataService.ts @@ -16,7 +16,7 @@ export interface IMetadataService { getMetadata(connectionUri: string): Thenable; - getDatabaseNames(connectionUri: string): Thenable; + getDatabases(connectionUri: string): Thenable; getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable; @@ -49,7 +49,7 @@ export class MetadataService implements IMetadataService { return Promise.resolve(undefined); } - public getDatabaseNames(connectionUri: string): Thenable { + public getDatabases(connectionUri: string): Thenable { let providerId: string = this._connectionService.getProviderIdFromUri(connectionUri); if (providerId) { let provider = this._providers[providerId]; diff --git a/src/sql/workbench/api/browser/mainThreadDataProtocol.ts b/src/sql/workbench/api/browser/mainThreadDataProtocol.ts index 20d94e88ab..7464eaf2e8 100644 --- a/src/sql/workbench/api/browser/mainThreadDataProtocol.ts +++ b/src/sql/workbench/api/browser/mainThreadDataProtocol.ts @@ -210,7 +210,7 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData getMetadata(connectionUri: string): Thenable { return self._proxy.$getMetadata(handle, connectionUri); }, - getDatabases(connectionUri: string): Thenable { + getDatabases(connectionUri: string): Thenable { return self._proxy.$getDatabases(handle, connectionUri); }, getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable { diff --git a/src/sql/workbench/api/common/extHostDataProtocol.ts b/src/sql/workbench/api/common/extHostDataProtocol.ts index 409ab91a70..531d965624 100644 --- a/src/sql/workbench/api/common/extHostDataProtocol.ts +++ b/src/sql/workbench/api/common/extHostDataProtocol.ts @@ -411,7 +411,7 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape { return this._resolveProvider(handle).getMetadata(connectionUri); } - public $getDatabases(handle: number, connectionUri: string): Thenable { + public $getDatabases(handle: number, connectionUri: string): Thenable { return this._resolveProvider(handle).getDatabases(connectionUri); } diff --git a/src/sql/workbench/api/common/sqlExtHost.protocol.ts b/src/sql/workbench/api/common/sqlExtHost.protocol.ts index aab905cfae..dcbf427877 100644 --- a/src/sql/workbench/api/common/sqlExtHost.protocol.ts +++ b/src/sql/workbench/api/common/sqlExtHost.protocol.ts @@ -113,7 +113,7 @@ export abstract class ExtHostDataProtocolShape { */ $getMetadata(handle: number, connectionUri: string): Thenable { throw ni(); } - $getDatabases(handle: number, connectionUri: string): Thenable { throw ni(); } + $getDatabases(handle: number, connectionUri: string): Thenable { throw ni(); } $getTableInfo(handle: number, connectionUri: string, metadata: azdata.ObjectMetadata): Thenable { throw ni(); } diff --git a/src/sql/workbench/contrib/dashboard/browser/widgets/explorer/explorerWidget.component.ts b/src/sql/workbench/contrib/dashboard/browser/widgets/explorer/explorerWidget.component.ts index d31444bb42..98795c871f 100644 --- a/src/sql/workbench/contrib/dashboard/browser/widgets/explorer/explorerWidget.component.ts +++ b/src/sql/workbench/contrib/dashboard/browser/widgets/explorer/explorerWidget.component.ts @@ -27,6 +27,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable'; import { subscriptionToDisposable } from 'sql/base/browser/lifecycle'; import { ObjectMetadataWrapper } from 'sql/workbench/contrib/dashboard/browser/widgets/explorer/objectMetadataWrapper'; import { status, alert } from 'vs/base/browser/ui/aria/aria'; +import { isStringArray } from 'vs/base/common/types'; @Component({ selector: 'explorer-widget', @@ -131,10 +132,13 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget, ))); } else { const currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile; - this._register(subscriptionToDisposable(this._bootstrap.metadataService.databaseNames.subscribe( + this._register(subscriptionToDisposable(this._bootstrap.metadataService.databases.subscribe( data => { // Handle the case where there is no metadata service data = data || []; + if (!isStringArray(data)) { + data = data.map(item => item.options['name'] as string); + } const profileData = data.map(d => { const profile = new ConnectionProfile(this.capabilitiesService, currentProfile); profile.databaseName = d; diff --git a/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts b/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts index a79a259dc0..126951b35d 100644 --- a/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts +++ b/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts @@ -36,8 +36,8 @@ export class SingleConnectionMetadataService { return Observable.fromPromise(this._metadataService.getMetadata(this._uri)); } - get databaseNames(): Observable { - return Observable.fromPromise(this._metadataService.getDatabaseNames(this._uri)); + get databases(): Observable { + return Observable.fromPromise(this._metadataService.getDatabases(this._uri)); } }