mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
extend the ListDatabasesRequest to allow more information to be returned (#10186)
* database detail * revert sts change * reuse databaseInfo interface
This commit is contained in:
3
src/sql/azdata.d.ts
vendored
3
src/sql/azdata.d.ts
vendored
@@ -599,6 +599,7 @@ declare module 'azdata' {
|
|||||||
// List Databases Request ----------------------------------------------------------------------
|
// List Databases Request ----------------------------------------------------------------------
|
||||||
export interface ListDatabasesResult {
|
export interface ListDatabasesResult {
|
||||||
databaseNames: Array<string>;
|
databaseNames: Array<string>;
|
||||||
|
databases?: Array<DatabaseInfo>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -725,7 +726,7 @@ declare module 'azdata' {
|
|||||||
export interface MetadataProvider extends DataProvider {
|
export interface MetadataProvider extends DataProvider {
|
||||||
getMetadata(connectionUri: string): Thenable<ProviderMetadata>;
|
getMetadata(connectionUri: string): Thenable<ProviderMetadata>;
|
||||||
|
|
||||||
getDatabases(connectionUri: string): Thenable<string[]>;
|
getDatabases(connectionUri: string): Thenable<string[] | DatabaseInfo[]>;
|
||||||
|
|
||||||
getTableInfo(connectionUri: string, metadata: ObjectMetadata): Thenable<ColumnMetadata[]>;
|
getTableInfo(connectionUri: string, metadata: ObjectMetadata): Thenable<ColumnMetadata[]>;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export interface IMetadataService {
|
|||||||
|
|
||||||
getMetadata(connectionUri: string): Thenable<azdata.ProviderMetadata | undefined>;
|
getMetadata(connectionUri: string): Thenable<azdata.ProviderMetadata | undefined>;
|
||||||
|
|
||||||
getDatabaseNames(connectionUri: string): Thenable<string[]>;
|
getDatabases(connectionUri: string): Thenable<string[] | azdata.DatabaseInfo[]>;
|
||||||
|
|
||||||
getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[] | undefined>;
|
getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[] | undefined>;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ export class MetadataService implements IMetadataService {
|
|||||||
return Promise.resolve(undefined);
|
return Promise.resolve(undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getDatabaseNames(connectionUri: string): Thenable<string[]> {
|
public getDatabases(connectionUri: string): Thenable<string[] | azdata.DatabaseInfo[]> {
|
||||||
let providerId: string = this._connectionService.getProviderIdFromUri(connectionUri);
|
let providerId: string = this._connectionService.getProviderIdFromUri(connectionUri);
|
||||||
if (providerId) {
|
if (providerId) {
|
||||||
let provider = this._providers[providerId];
|
let provider = this._providers[providerId];
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ export class MainThreadDataProtocol extends Disposable implements MainThreadData
|
|||||||
getMetadata(connectionUri: string): Thenable<azdata.ProviderMetadata> {
|
getMetadata(connectionUri: string): Thenable<azdata.ProviderMetadata> {
|
||||||
return self._proxy.$getMetadata(handle, connectionUri);
|
return self._proxy.$getMetadata(handle, connectionUri);
|
||||||
},
|
},
|
||||||
getDatabases(connectionUri: string): Thenable<string[]> {
|
getDatabases(connectionUri: string): Thenable<string[] | azdata.DatabaseInfo[]> {
|
||||||
return self._proxy.$getDatabases(handle, connectionUri);
|
return self._proxy.$getDatabases(handle, connectionUri);
|
||||||
},
|
},
|
||||||
getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> {
|
getTableInfo(connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> {
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
|
|||||||
return this._resolveProvider<azdata.MetadataProvider>(handle).getMetadata(connectionUri);
|
return this._resolveProvider<azdata.MetadataProvider>(handle).getMetadata(connectionUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
public $getDatabases(handle: number, connectionUri: string): Thenable<string[]> {
|
public $getDatabases(handle: number, connectionUri: string): Thenable<string[] | azdata.DatabaseInfo[]> {
|
||||||
return this._resolveProvider<azdata.MetadataProvider>(handle).getDatabases(connectionUri);
|
return this._resolveProvider<azdata.MetadataProvider>(handle).getDatabases(connectionUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ export abstract class ExtHostDataProtocolShape {
|
|||||||
*/
|
*/
|
||||||
$getMetadata(handle: number, connectionUri: string): Thenable<azdata.ProviderMetadata> { throw ni(); }
|
$getMetadata(handle: number, connectionUri: string): Thenable<azdata.ProviderMetadata> { throw ni(); }
|
||||||
|
|
||||||
$getDatabases(handle: number, connectionUri: string): Thenable<string[]> { throw ni(); }
|
$getDatabases(handle: number, connectionUri: string): Thenable<string[] | azdata.DatabaseInfo[]> { throw ni(); }
|
||||||
|
|
||||||
$getTableInfo(handle: number, connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> { throw ni(); }
|
$getTableInfo(handle: number, connectionUri: string, metadata: azdata.ObjectMetadata): Thenable<azdata.ColumnMetadata[]> { throw ni(); }
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable';
|
|||||||
import { subscriptionToDisposable } from 'sql/base/browser/lifecycle';
|
import { subscriptionToDisposable } from 'sql/base/browser/lifecycle';
|
||||||
import { ObjectMetadataWrapper } from 'sql/workbench/contrib/dashboard/browser/widgets/explorer/objectMetadataWrapper';
|
import { ObjectMetadataWrapper } from 'sql/workbench/contrib/dashboard/browser/widgets/explorer/objectMetadataWrapper';
|
||||||
import { status, alert } from 'vs/base/browser/ui/aria/aria';
|
import { status, alert } from 'vs/base/browser/ui/aria/aria';
|
||||||
|
import { isStringArray } from 'vs/base/common/types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'explorer-widget',
|
selector: 'explorer-widget',
|
||||||
@@ -131,10 +132,13 @@ export class ExplorerWidget extends DashboardWidget implements IDashboardWidget,
|
|||||||
)));
|
)));
|
||||||
} else {
|
} else {
|
||||||
const currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
|
const currentProfile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
|
||||||
this._register(subscriptionToDisposable(this._bootstrap.metadataService.databaseNames.subscribe(
|
this._register(subscriptionToDisposable(this._bootstrap.metadataService.databases.subscribe(
|
||||||
data => {
|
data => {
|
||||||
// Handle the case where there is no metadata service
|
// Handle the case where there is no metadata service
|
||||||
data = data || [];
|
data = data || [];
|
||||||
|
if (!isStringArray(data)) {
|
||||||
|
data = data.map(item => item.options['name'] as string);
|
||||||
|
}
|
||||||
const profileData = data.map(d => {
|
const profileData = data.map(d => {
|
||||||
const profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
|
const profile = new ConnectionProfile(this.capabilitiesService, currentProfile);
|
||||||
profile.databaseName = d;
|
profile.databaseName = d;
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ export class SingleConnectionMetadataService {
|
|||||||
return Observable.fromPromise(this._metadataService.getMetadata(this._uri));
|
return Observable.fromPromise(this._metadataService.getMetadata(this._uri));
|
||||||
}
|
}
|
||||||
|
|
||||||
get databaseNames(): Observable<string[]> {
|
get databases(): Observable<string[] | DatabaseInfo[]> {
|
||||||
return Observable.fromPromise(this._metadataService.getDatabaseNames(this._uri));
|
return Observable.fromPromise(this._metadataService.getDatabases(this._uri));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user