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;