From 5106a08ea314d44e1d9f23e8b16e5f4894a220c5 Mon Sep 17 00:00:00 2001 From: Kim Santiago <31145923+kisantia@users.noreply.github.com> Date: Mon, 17 Oct 2022 11:18:42 -0700 Subject: [PATCH] Add include permissions option for create project from db in vscode (#20845) * add quickpick for include permissions option * update vscode-mssql.d.ts * add const * undo whitespace change --- .../src/common/constants.ts | 1 + .../src/controllers/projectController.ts | 2 +- .../createProjectFromDatabaseQuickpick.ts | 18 ++++++++++++++++-- extensions/types/vscode-mssql.d.ts | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index 88b9143e28..991a823bf7 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -297,6 +297,7 @@ export const browseButtonText = localize('browseButtonText', "Browse folder"); export const selectFolderStructure = localize('selectFolderStructure', "Select folder structure"); export const folderStructureLabel = localize('folderStructureLabel', "Folder structure"); export const includePermissionsLabel = localize('includePermissionsLabel', "Include permissions"); +export const includePermissionsInProject = localize('includePermissionsInProject', "Include permissions in project"); export const WorkspaceFileExtension = '.code-workspace'; export const browseEllipsisWithIcon = `$(folder) ${localize('browseEllipsis', "Browse...")}`; export const selectProjectLocation = localize('selectProjectLocation', "Select project location"); diff --git a/extensions/sql-database-projects/src/controllers/projectController.ts b/extensions/sql-database-projects/src/controllers/projectController.ts index c19e854b65..da2882aa53 100644 --- a/extensions/sql-database-projects/src/controllers/projectController.ts +++ b/extensions/sql-database-projects/src/controllers/projectController.ts @@ -1510,7 +1510,7 @@ export class ProjectsController { if (azdataApi) { await (service as mssql.IDacFxService).createProjectFromDatabase(model.database, model.filePath, model.projName, model.version, model.connectionUri, model.extractTarget as mssql.ExtractTarget, azdataApi.TaskExecutionMode.execute, model.includePermissions); } else { - await (service as mssqlVscode.IDacFxService).createProjectFromDatabase(model.database, model.filePath, model.projName, model.version, model.connectionUri, model.extractTarget as mssqlVscode.ExtractTarget, TaskExecutionMode.execute as unknown as mssqlVscode.TaskExecutionMode); + await (service as mssqlVscode.IDacFxService).createProjectFromDatabase(model.database, model.filePath, model.projName, model.version, model.connectionUri, model.extractTarget as mssqlVscode.ExtractTarget, TaskExecutionMode.execute as unknown as mssqlVscode.TaskExecutionMode, model.includePermissions); } // TODO: Check for success; throw error } diff --git a/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseQuickpick.ts b/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseQuickpick.ts index 120691f651..6b181939f5 100644 --- a/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseQuickpick.ts +++ b/extensions/sql-database-projects/src/dialogs/createProjectFromDatabaseQuickpick.ts @@ -133,7 +133,20 @@ export async function createNewProjectFromDatabaseWithQuickpick(connectionInfo?: return undefined; } - // 5. SDK-style project or not + // 6. Include permissions or not + const includePermissionsResult = await vscode.window.showQuickPick( + [constants.noStringDefault, constants.yesString], + { title: constants.includePermissionsInProject, ignoreFocusOut: true } + ); + + if (!includePermissionsResult) { + // User cancelled + return undefined; + } + + const includePermissions = includePermissionsResult === constants.yesString; + + // 7. SDK-style project or not let sdkStyle; const sdkLearnMoreButton: vscode.QuickInputButton = { iconPath: new vscode.ThemeIcon('link-external'), @@ -182,6 +195,7 @@ export async function createNewProjectFromDatabaseWithQuickpick(connectionInfo?: filePath: projectLocation, version: '1.0.0.0', extractTarget: mapExtractTargetEnum(folderStructure), - sdkStyle: sdkStyle + sdkStyle: sdkStyle, + includePermissions: includePermissions }; } diff --git a/extensions/types/vscode-mssql.d.ts b/extensions/types/vscode-mssql.d.ts index 9abffc3633..24f68f2ec7 100644 --- a/extensions/types/vscode-mssql.d.ts +++ b/extensions/types/vscode-mssql.d.ts @@ -415,7 +415,7 @@ declare module 'vscode-mssql' { exportBacpac(databaseName: string, packageFilePath: string, ownerUri: string, taskExecutionMode: TaskExecutionMode): Thenable; importBacpac(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: TaskExecutionMode): Thenable; extractDacpac(databaseName: string, packageFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, taskExecutionMode: TaskExecutionMode): Thenable; - createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: ExtractTarget, taskExecutionMode: TaskExecutionMode): Thenable; + createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: ExtractTarget, taskExecutionMode: TaskExecutionMode, includePermissions?: boolean): Thenable; deployDacpac(packageFilePath: string, databaseName: string, upgradeExisting: boolean, ownerUri: string, taskExecutionMode: TaskExecutionMode, sqlCommandVariableValues?: Record, deploymentOptions?: DeploymentOptions): Thenable; generateDeployScript(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: TaskExecutionMode, sqlCommandVariableValues?: Record, deploymentOptions?: DeploymentOptions): Thenable; generateDeployPlan(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: TaskExecutionMode): Thenable;