diff --git a/src/sql/parts/disasterRecovery/backup/common/backupServiceImp.ts b/src/sql/parts/disasterRecovery/backup/common/backupServiceImp.ts index 1966b80dfb..68b2810cbf 100644 --- a/src/sql/parts/disasterRecovery/backup/common/backupServiceImp.ts +++ b/src/sql/parts/disasterRecovery/backup/common/backupServiceImp.ts @@ -109,7 +109,7 @@ export class BackupUiService implements IBackupUiService { let self = this; return new Promise((resolve, reject) => { self.showBackupDialog(connection).then(() => { - resolve(); + resolve(void 0); }, error => { reject(); }); @@ -145,7 +145,7 @@ export class BackupUiService implements IBackupUiService { } let backupOptions = this.getOptions(this._currentProvider); - return new TPromise(() => { + return new TPromise((resolve) => { let uri = this._connectionManagementService.getConnectionUri(connection) + ProviderConnectionInfo.idSeparator + ConnectionUtils.ConnectionUriBackupIdAttributeName @@ -168,6 +168,7 @@ export class BackupUiService implements IBackupUiService { } else { (backupDialog as BackupDialog).open(connection); } + resolve(void 0); }); } diff --git a/src/sql/parts/objectExplorer/viewlet/serverTreeActionProvider.ts b/src/sql/parts/objectExplorer/viewlet/serverTreeActionProvider.ts index 0c63ac8307..cad4343db2 100644 --- a/src/sql/parts/objectExplorer/viewlet/serverTreeActionProvider.ts +++ b/src/sql/parts/objectExplorer/viewlet/serverTreeActionProvider.ts @@ -27,7 +27,7 @@ import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile import { TreeUpdateUtils } from 'sql/parts/objectExplorer/viewlet/treeUpdateUtils'; import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement'; import { MenuId, IMenuService } from 'vs/platform/actions/common/actions'; -import { NewQueryAction } from 'sql/workbench/common/actions'; +import { NewQueryAction, BackupAction, RestoreAction } from 'sql/workbench/common/actions'; import { ConnectionContextKey } from 'sql/parts/connection/common/connectionContextKey'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { TreeNodeContextKey } from './treeNodeContextKey'; @@ -161,8 +161,10 @@ export class ServerTreeActionProvider extends ContributableActionProvider { private getBuiltInNodeActions(context: ObjectExplorerContext): IAction[] { let actions: IAction[] = []; let treeNode = context.treeNode; + let isAvailableDatabaseNode = false; if (TreeUpdateUtils.isDatabaseNode(treeNode)) { if (TreeUpdateUtils.isAvailableDatabaseNode(treeNode)) { + isAvailableDatabaseNode = true; actions.push(this._instantiationService.createInstance(ManageConnectionAction, ManageConnectionAction.ID, ManageConnectionAction.LABEL, context.tree)); this.addNewQueryAction(context, actions); } else { @@ -171,6 +173,12 @@ export class ServerTreeActionProvider extends ContributableActionProvider { } this.addScriptingActions(context, actions); + + if (isAvailableDatabaseNode) { + this.addBackupAction(context, actions); + this.addRestoreAction(context, actions); + } + actions.push(this._instantiationService.createInstance(RefreshAction, RefreshAction.ID, RefreshAction.LABEL, context.tree, treeNode)); return actions; @@ -182,6 +190,18 @@ export class ServerTreeActionProvider extends ContributableActionProvider { } } + private addBackupAction(context: ObjectExplorerContext, actions: IAction[]): void { + if (this._queryManagementService.isProviderRegistered(context.profile.providerName)) { + actions.push(this._instantiationService.createInstance(OEAction, BackupAction.ID, BackupAction.LABEL)); + } + } + + private addRestoreAction(context: ObjectExplorerContext, actions: IAction[]): void { + if (this._queryManagementService.isProviderRegistered(context.profile.providerName)) { + actions.push(this._instantiationService.createInstance(OEAction, RestoreAction.ID, RestoreAction.LABEL)); + } + } + private addScriptingActions(context: ObjectExplorerContext, actions: IAction[]): void { if (this._scriptingService.isProviderRegistered(context.profile.providerName)) { let scriptMap: Map = ObjectExplorerActionUtilities.getScriptMap(context.treeNode); diff --git a/src/sql/workbench/common/taskUtilities.ts b/src/sql/workbench/common/taskUtilities.ts index 415d1b72ac..e11f1d40b1 100644 --- a/src/sql/workbench/common/taskUtilities.ts +++ b/src/sql/workbench/common/taskUtilities.ts @@ -354,13 +354,17 @@ export function showCreateLogin(uri: string, connection: IConnectionProfile, adm export function showBackup(connection: IConnectionProfile, backupUiService: IBackupUiService): Promise { return new Promise((resolve) => { - backupUiService.showBackup(connection); + backupUiService.showBackup(connection).then(() => { + resolve(void 0); + }); }); } export function showRestore(connection: IConnectionProfile, restoreDialogService: IRestoreDialogController): Promise { return new Promise((resolve) => { - restoreDialogService.showDialog(connection); + restoreDialogService.showDialog(connection).then(() => { + resolve(void 0); + }); }); }