mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
Make SDK-style project a checkbox option instead of separate template (#18698)
* switch to using a checkbox instead of separate template for new SDK style project * let project provider provide sdk learn more url * Reorder
This commit is contained in:
@@ -154,7 +154,7 @@ export class ProjectsController {
|
||||
*/
|
||||
public async createNewProject(creationParams: NewProjectParams): Promise<string> {
|
||||
TelemetryReporter.createActionEvent(TelemetryViews.ProjectController, TelemetryActions.createNewProject)
|
||||
.withAdditionalProperties({ template: creationParams.projectTypeId })
|
||||
.withAdditionalProperties({ template: creationParams.projectTypeId, sdkStyle: creationParams.sdkStyle!.toString() })
|
||||
.send();
|
||||
|
||||
if (creationParams.projectGuid && !UUID.isUUID(creationParams.projectGuid)) {
|
||||
@@ -171,7 +171,7 @@ export class ProjectsController {
|
||||
'PROJECT_DSP': creationParams.targetPlatform ? constants.targetPlatformToVersion.get(creationParams.targetPlatform)! : constants.defaultDSP
|
||||
};
|
||||
|
||||
let newProjFileContents = creationParams.projectTypeId === constants.emptySqlDatabaseSdkProjectTypeId ? templates.macroExpansion(templates.newSdkSqlProjectTemplate, macroDict) : templates.macroExpansion(templates.newSqlProjectTemplate, macroDict);
|
||||
let newProjFileContents = creationParams.sdkStyle ? templates.macroExpansion(templates.newSdkSqlProjectTemplate, macroDict) : templates.macroExpansion(templates.newSqlProjectTemplate, macroDict);
|
||||
|
||||
let newProjFileName = creationParams.newProjName;
|
||||
|
||||
@@ -1111,7 +1111,8 @@ export class ProjectsController {
|
||||
const newProjFilePath = await this.createNewProject({
|
||||
newProjName: projectInfo.projectName,
|
||||
folderUri: vscode.Uri.file(projectInfo.outputFolder),
|
||||
projectTypeId: constants.emptySqlDatabaseProjectTypeId
|
||||
projectTypeId: constants.emptySqlDatabaseProjectTypeId,
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
const project = await Project.openProject(newProjFilePath);
|
||||
@@ -1286,7 +1287,8 @@ export class ProjectsController {
|
||||
const newProjFilePath = await this.createNewProject({
|
||||
newProjName: model.projName,
|
||||
folderUri: vscode.Uri.file(newProjFolderUri),
|
||||
projectTypeId: model.sdkStyle ? constants.emptySqlDatabaseSdkProjectTypeId : constants.emptySqlDatabaseProjectTypeId
|
||||
projectTypeId: model.sdkStyle ? constants.emptySqlDatabaseSdkProjectTypeId : constants.emptySqlDatabaseProjectTypeId,
|
||||
sdkStyle: model.sdkStyle
|
||||
});
|
||||
|
||||
model.filePath = path.dirname(newProjFilePath);
|
||||
@@ -1498,6 +1500,7 @@ export interface NewProjectParams {
|
||||
newProjName: string;
|
||||
folderUri: vscode.Uri;
|
||||
projectTypeId: string;
|
||||
sdkStyle: boolean;
|
||||
projectGuid?: string;
|
||||
targetPlatform?: SqlTargetPlatform;
|
||||
}
|
||||
|
||||
@@ -381,7 +381,7 @@ export class CreateProjectFromDatabaseDialog {
|
||||
filePath: this.projectLocationTextBox!.value!,
|
||||
version: '1.0.0.0',
|
||||
extractTarget: mapExtractTargetEnum(<string>this.folderStructureDropDown!.value),
|
||||
sdkStyle: this.sdkStyleCheckbox?.checked
|
||||
sdkStyle: this.sdkStyleCheckbox?.checked!
|
||||
};
|
||||
|
||||
azdataApi!.window.closeDialog(this.dialog);
|
||||
|
||||
@@ -139,6 +139,7 @@ export async function createNewProjectFromDatabaseWithQuickpick(connectionInfo?:
|
||||
projName: projectName,
|
||||
filePath: projectLocation,
|
||||
version: '1.0.0.0',
|
||||
extractTarget: mapExtractTargetEnum(folderStructure)
|
||||
extractTarget: mapExtractTargetEnum(folderStructure),
|
||||
sdkStyle: false // todo: add sdkstyle option to quickpick
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,5 +18,5 @@ export interface ImportDataModel {
|
||||
filePath: string;
|
||||
version: string;
|
||||
extractTarget: ExtractTarget;
|
||||
sdkStyle?: boolean;
|
||||
sdkStyle: boolean;
|
||||
}
|
||||
|
||||
@@ -36,31 +36,24 @@ export class SqlDatabaseProjectProvider implements dataworkspace.IProjectProvide
|
||||
*/
|
||||
get supportedProjectTypes(): dataworkspace.IProjectType[] {
|
||||
return [{
|
||||
id: constants.emptySqlDatabaseSdkProjectTypeId,
|
||||
projectFileExtension: constants.sqlprojExtension.replace(/\./g, ''),
|
||||
displayName: constants.emptySdkProjectTypeDisplayName,
|
||||
description: constants.emptySdkProjectTypeDescription,
|
||||
icon: IconPathHelper.colorfulSqlProject,
|
||||
targetPlatforms: Array.from(constants.targetPlatformToVersion.keys()),
|
||||
defaultTargetPlatform: constants.defaultTargetPlatform,
|
||||
linkDisplayValue: constants.learnMore,
|
||||
linkLocation: constants.sdkLearnMoreUrl
|
||||
},
|
||||
{
|
||||
id: constants.emptySqlDatabaseProjectTypeId,
|
||||
projectFileExtension: constants.sqlprojExtension.replace(/\./g, ''),
|
||||
displayName: constants.emptyProjectTypeDisplayName,
|
||||
description: constants.emptyProjectTypeDescription,
|
||||
icon: IconPathHelper.colorfulSqlProject,
|
||||
targetPlatforms: Array.from(constants.targetPlatformToVersion.keys()),
|
||||
defaultTargetPlatform: constants.defaultTargetPlatform
|
||||
defaultTargetPlatform: constants.defaultTargetPlatform,
|
||||
sdkStyleOption: true,
|
||||
sdkStyleLearnMoreUrl: constants.sdkLearnMoreUrl
|
||||
},
|
||||
{
|
||||
id: constants.edgeSqlDatabaseProjectTypeId,
|
||||
projectFileExtension: constants.sqlprojExtension.replace(/\./g, ''),
|
||||
displayName: constants.edgeProjectTypeDisplayName,
|
||||
description: constants.edgeProjectTypeDescription,
|
||||
icon: IconPathHelper.sqlEdgeProject
|
||||
icon: IconPathHelper.sqlEdgeProject,
|
||||
sdkStyleOption: true,
|
||||
sdkStyleLearnMoreUrl: constants.sdkLearnMoreUrl
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -71,12 +64,13 @@ export class SqlDatabaseProjectProvider implements dataworkspace.IProjectProvide
|
||||
* @param projectTypeId the ID of the project/template
|
||||
* @returns Uri of the newly created project file
|
||||
*/
|
||||
async createProject(name: string, location: vscode.Uri, projectTypeId: string, targetPlatform?: sqldbproj.SqlTargetPlatform): Promise<vscode.Uri> {
|
||||
async createProject(name: string, location: vscode.Uri, projectTypeId: string, targetPlatform?: sqldbproj.SqlTargetPlatform, sdkStyle: boolean = true): Promise<vscode.Uri> {
|
||||
const projectFile = await this.projectController.createNewProject({
|
||||
newProjName: name,
|
||||
folderUri: location,
|
||||
projectTypeId: projectTypeId,
|
||||
targetPlatform: targetPlatform
|
||||
targetPlatform: targetPlatform,
|
||||
sdkStyle: sdkStyle
|
||||
});
|
||||
|
||||
return vscode.Uri.file(projectFile);
|
||||
|
||||
@@ -36,7 +36,8 @@ describe('Publish Database Dialog', () => {
|
||||
newProjName: 'TestProjectName',
|
||||
folderUri: vscode.Uri.file(projFileDir),
|
||||
projectTypeId: emptySqlDatabaseProjectTypeId,
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575'
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575',
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
const project = new Project(projFilePath);
|
||||
@@ -54,7 +55,8 @@ describe('Publish Database Dialog', () => {
|
||||
newProjName: 'TestProjectName',
|
||||
folderUri: vscode.Uri.file(projFileDir),
|
||||
projectTypeId: emptySqlDatabaseProjectTypeId,
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575'
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575',
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
const project = new Project(projFilePath);
|
||||
|
||||
@@ -59,7 +59,8 @@ describe('ProjectsController', function (): void {
|
||||
newProjName: 'TestProjectName',
|
||||
folderUri: vscode.Uri.file(projFileDir),
|
||||
projectTypeId: constants.emptySqlDatabaseProjectTypeId,
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575'
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575',
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
let projFileText = (await fs.readFile(projFilePath)).toString();
|
||||
@@ -77,7 +78,8 @@ describe('ProjectsController', function (): void {
|
||||
folderUri: vscode.Uri.file(projFileDir),
|
||||
projectTypeId: constants.emptySqlDatabaseProjectTypeId,
|
||||
projectGuid: 'BA5EBA11-C0DE-5EA7-ACED-BABB1E70A575',
|
||||
targetPlatform: projTargetPlatform
|
||||
targetPlatform: projTargetPlatform,
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
const project = await Project.openProject(projFilePath);
|
||||
@@ -496,7 +498,8 @@ describe('ProjectsController', function (): void {
|
||||
projName: 'testProject',
|
||||
filePath: 'testLocation',
|
||||
version: '1.0.0.0',
|
||||
extractTarget: mssql.ExtractTarget['schemaObjectType']
|
||||
extractTarget: mssql.ExtractTarget['schemaObjectType'],
|
||||
sdkStyle: false
|
||||
});
|
||||
|
||||
return Promise.resolve(undefined);
|
||||
@@ -520,7 +523,7 @@ describe('ProjectsController', function (): void {
|
||||
let folderPath = await testUtils.generateTestFolderPath();
|
||||
let projectName = 'My Project';
|
||||
let importPath;
|
||||
let model: ImportDataModel = { connectionUri: 'My Id', database: 'My Database', projName: projectName, filePath: folderPath, version: '1.0.0.0', extractTarget: mssql.ExtractTarget['file'] };
|
||||
let model: ImportDataModel = { connectionUri: 'My Id', database: 'My Database', projName: projectName, filePath: folderPath, version: '1.0.0.0', extractTarget: mssql.ExtractTarget['file'], sdkStyle: false };
|
||||
|
||||
const projController = new ProjectsController(testContext.outputChannel);
|
||||
projController.setFilePath(model);
|
||||
@@ -533,7 +536,7 @@ describe('ProjectsController', function (): void {
|
||||
let folderPath = await testUtils.generateTestFolderPath();
|
||||
let projectName = 'My Project';
|
||||
let importPath;
|
||||
let model: ImportDataModel = { connectionUri: 'My Id', database: 'My Database', projName: projectName, filePath: folderPath, version: '1.0.0.0', extractTarget: mssql.ExtractTarget['schemaObjectType'] };
|
||||
let model: ImportDataModel = { connectionUri: 'My Id', database: 'My Database', projName: projectName, filePath: folderPath, version: '1.0.0.0', extractTarget: mssql.ExtractTarget['schemaObjectType'], sdkStyle: false };
|
||||
|
||||
const projController = new ProjectsController(testContext.outputChannel);
|
||||
projController.setFilePath(model);
|
||||
|
||||
Reference in New Issue
Block a user