mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Add include permissions option to create project from db dialog (#20823)
* add import permissions option to create project from db dialog * change 'import' to 'include' * update azdata dependency version * update STS to 4.3.0.37 * fix test
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
|
||||||
"version": "4.3.0.32",
|
"version": "4.3.0.37",
|
||||||
"downloadFileNames": {
|
"downloadFileNames": {
|
||||||
"Windows_86": "win-x86-net6.0.zip",
|
"Windows_86": "win-x86-net6.0.zip",
|
||||||
"Windows_64": "win-x64-net6.0.zip",
|
"Windows_64": "win-x64-net6.0.zip",
|
||||||
|
|||||||
@@ -508,6 +508,7 @@ export interface ExtractParams {
|
|||||||
ownerUri: string;
|
ownerUri: string;
|
||||||
extractTarget?: mssql.ExtractTarget;
|
extractTarget?: mssql.ExtractTarget;
|
||||||
taskExecutionMode: TaskExecutionMode;
|
taskExecutionMode: TaskExecutionMode;
|
||||||
|
includePermissions?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DeployParams {
|
export interface DeployParams {
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ export class DacFxService implements mssql.IDacFxService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: mssql.ExtractTarget, taskExecutionMode: azdata.TaskExecutionMode): Thenable<mssql.DacFxResult> {
|
public createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: mssql.ExtractTarget, taskExecutionMode: azdata.TaskExecutionMode, includePermissions?: boolean): Thenable<mssql.DacFxResult> {
|
||||||
const params: contracts.ExtractParams = { databaseName: databaseName, packageFilePath: targetFilePath, applicationName: applicationName, applicationVersion: applicationVersion, ownerUri: ownerUri, extractTarget: extractTarget, taskExecutionMode: taskExecutionMode };
|
const params: contracts.ExtractParams = { databaseName: databaseName, packageFilePath: targetFilePath, applicationName: applicationName, applicationVersion: applicationVersion, ownerUri: ownerUri, extractTarget: extractTarget, taskExecutionMode: taskExecutionMode, includePermissions: includePermissions };
|
||||||
return this.client.sendRequest(contracts.ExtractRequest.type, params).then(
|
return this.client.sendRequest(contracts.ExtractRequest.type, params).then(
|
||||||
undefined,
|
undefined,
|
||||||
e => {
|
e => {
|
||||||
|
|||||||
2
extensions/mssql/src/mssql.d.ts
vendored
2
extensions/mssql/src/mssql.d.ts
vendored
@@ -240,7 +240,7 @@ declare module 'mssql' {
|
|||||||
exportBacpac(databaseName: string, packageFilePath: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
exportBacpac(databaseName: string, packageFilePath: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
||||||
importBacpac(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
importBacpac(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
||||||
extractDacpac(databaseName: string, packageFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
extractDacpac(databaseName: string, packageFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
||||||
createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: ExtractTarget, taskExecutionMode: azdata.TaskExecutionMode): Thenable<DacFxResult>;
|
createProjectFromDatabase(databaseName: string, targetFilePath: string, applicationName: string, applicationVersion: string, ownerUri: string, extractTarget: ExtractTarget, taskExecutionMode: azdata.TaskExecutionMode, includePermissions?: boolean): Thenable<DacFxResult>;
|
||||||
deployDacpac(packageFilePath: string, databaseName: string, upgradeExisting: boolean, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode, sqlCommandVariableValues?: Record<string, string>, deploymentOptions?: DeploymentOptions): Thenable<DacFxResult>;
|
deployDacpac(packageFilePath: string, databaseName: string, upgradeExisting: boolean, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode, sqlCommandVariableValues?: Record<string, string>, deploymentOptions?: DeploymentOptions): Thenable<DacFxResult>;
|
||||||
generateDeployScript(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode, sqlCommandVariableValues?: Record<string, string>, deploymentOptions?: DeploymentOptions): Thenable<DacFxResult>;
|
generateDeployScript(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode, sqlCommandVariableValues?: Record<string, string>, deploymentOptions?: DeploymentOptions): Thenable<DacFxResult>;
|
||||||
generateDeployPlan(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<GenerateDeployPlanResult>;
|
generateDeployPlan(packageFilePath: string, databaseName: string, ownerUri: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<GenerateDeployPlanResult>;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"preview": true,
|
"preview": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.30.1",
|
"vscode": "^1.30.1",
|
||||||
"azdata": ">=1.38.0"
|
"azdata": ">=1.40.0"
|
||||||
},
|
},
|
||||||
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
|
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
|
||||||
"icon": "images/sqlDatabaseProjects.png",
|
"icon": "images/sqlDatabaseProjects.png",
|
||||||
|
|||||||
@@ -296,6 +296,7 @@ export const projectLocationPlaceholderText = localize('projectLocationPlacehold
|
|||||||
export const browseButtonText = localize('browseButtonText', "Browse folder");
|
export const browseButtonText = localize('browseButtonText', "Browse folder");
|
||||||
export const selectFolderStructure = localize('selectFolderStructure', "Select folder structure");
|
export const selectFolderStructure = localize('selectFolderStructure', "Select folder structure");
|
||||||
export const folderStructureLabel = localize('folderStructureLabel', "Folder structure");
|
export const folderStructureLabel = localize('folderStructureLabel', "Folder structure");
|
||||||
|
export const includePermissionsLabel = localize('includePermissionsLabel', "Include permissions");
|
||||||
export const WorkspaceFileExtension = '.code-workspace';
|
export const WorkspaceFileExtension = '.code-workspace';
|
||||||
export const browseEllipsisWithIcon = `$(folder) ${localize('browseEllipsis', "Browse...")}`;
|
export const browseEllipsisWithIcon = `$(folder) ${localize('browseEllipsis', "Browse...")}`;
|
||||||
export const selectProjectLocation = localize('selectProjectLocation', "Select project location");
|
export const selectProjectLocation = localize('selectProjectLocation', "Select project location");
|
||||||
|
|||||||
@@ -1508,7 +1508,7 @@ export class ProjectsController {
|
|||||||
const azdataApi = utils.getAzdataApi();
|
const azdataApi = utils.getAzdataApi();
|
||||||
|
|
||||||
if (azdataApi) {
|
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);
|
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 {
|
} 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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export class CreateProjectFromDatabaseDialog {
|
|||||||
public projectNameTextBox: azdataType.InputBoxComponent | undefined;
|
public projectNameTextBox: azdataType.InputBoxComponent | undefined;
|
||||||
public projectLocationTextBox: azdataType.InputBoxComponent | undefined;
|
public projectLocationTextBox: azdataType.InputBoxComponent | undefined;
|
||||||
public folderStructureDropDown: azdataType.DropDownComponent | undefined;
|
public folderStructureDropDown: azdataType.DropDownComponent | undefined;
|
||||||
|
public includePermissionsCheckbox: azdataType.CheckBoxComponent | undefined;
|
||||||
public sdkStyleCheckbox: azdataType.CheckBoxComponent | undefined;
|
public sdkStyleCheckbox: azdataType.CheckBoxComponent | undefined;
|
||||||
private formBuilder: azdataType.FormBuilder | undefined;
|
private formBuilder: azdataType.FormBuilder | undefined;
|
||||||
private connectionId: string | undefined;
|
private connectionId: string | undefined;
|
||||||
@@ -109,8 +110,10 @@ export class CreateProjectFromDatabaseDialog {
|
|||||||
targetProjectFormSection.addItems([projectNameRow, projectLocationRow]);
|
targetProjectFormSection.addItems([projectNameRow, projectLocationRow]);
|
||||||
|
|
||||||
const folderStructureRow = this.createFolderStructureRow(view);
|
const folderStructureRow = this.createFolderStructureRow(view);
|
||||||
const createProjectSettingsFormSection = view.modelBuilder.flexContainer().withLayout({ flexFlow: 'column' }).component();
|
|
||||||
createProjectSettingsFormSection.addItems([folderStructureRow]);
|
this.includePermissionsCheckbox = view.modelBuilder.checkBox().withProps({
|
||||||
|
label: constants.includePermissionsLabel,
|
||||||
|
}).component();
|
||||||
|
|
||||||
// could also potentially be radio buttons once there's a term to refer to "legacy" style sqlprojs
|
// could also potentially be radio buttons once there's a term to refer to "legacy" style sqlprojs
|
||||||
this.sdkStyleCheckbox = view.modelBuilder.checkBox().withProps({
|
this.sdkStyleCheckbox = view.modelBuilder.checkBox().withProps({
|
||||||
@@ -150,7 +153,10 @@ export class CreateProjectFromDatabaseDialog {
|
|||||||
title: constants.createProjectSettings,
|
title: constants.createProjectSettings,
|
||||||
components: [
|
components: [
|
||||||
{
|
{
|
||||||
component: createProjectSettingsFormSection,
|
component: folderStructureRow,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
component: this.includePermissionsCheckbox
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
component: sdkFormComponentGroup
|
component: sdkFormComponentGroup
|
||||||
@@ -407,7 +413,8 @@ export class CreateProjectFromDatabaseDialog {
|
|||||||
filePath: this.projectLocationTextBox!.value!,
|
filePath: this.projectLocationTextBox!.value!,
|
||||||
version: '1.0.0.0',
|
version: '1.0.0.0',
|
||||||
extractTarget: mapExtractTargetEnum(<string>this.folderStructureDropDown!.value),
|
extractTarget: mapExtractTargetEnum(<string>this.folderStructureDropDown!.value),
|
||||||
sdkStyle: this.sdkStyleCheckbox?.checked!
|
sdkStyle: this.sdkStyleCheckbox?.checked!,
|
||||||
|
includePermissions: this.includePermissionsCheckbox?.checked
|
||||||
};
|
};
|
||||||
|
|
||||||
azdataApi!.window.closeDialog(this.dialog);
|
azdataApi!.window.closeDialog(this.dialog);
|
||||||
|
|||||||
@@ -19,4 +19,5 @@ export interface ImportDataModel {
|
|||||||
version: string;
|
version: string;
|
||||||
extractTarget: ExtractTarget;
|
extractTarget: ExtractTarget;
|
||||||
sdkStyle: boolean;
|
sdkStyle: boolean;
|
||||||
|
includePermissions?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,8 @@ describe('Create Project From Database Dialog', () => {
|
|||||||
filePath: 'testLocation',
|
filePath: 'testLocation',
|
||||||
version: '1.0.0.0',
|
version: '1.0.0.0',
|
||||||
extractTarget: mssql.ExtractTarget.schemaObjectType,
|
extractTarget: mssql.ExtractTarget.schemaObjectType,
|
||||||
sdkStyle: true
|
sdkStyle: true,
|
||||||
|
includePermissions: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
dialog.createProjectFromDatabaseCallback = (m) => { model = m; };
|
dialog.createProjectFromDatabaseCallback = (m) => { model = m; };
|
||||||
|
|||||||
Reference in New Issue
Block a user