mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-07 17:23:56 -05:00
data workspace extension batch 2 (#12208)
* work in progress * load projects in view and test cases * update scope * make the sql proj menu available in workspace view * add extension unit test * address comments * fix errors
This commit is contained in:
@@ -16,7 +16,8 @@
|
||||
"onCommand:sqlDatabaseProjects.new",
|
||||
"onCommand:sqlDatabaseProjects.open",
|
||||
"onCommand:sqlDatabaseProjects.importDatabase",
|
||||
"workspaceContains:**/*.sqlproj"
|
||||
"workspaceContains:**/*.sqlproj",
|
||||
"onView:dataworkspace.views.main"
|
||||
],
|
||||
"main": "./out/extension",
|
||||
"repository": {
|
||||
@@ -25,9 +26,13 @@
|
||||
},
|
||||
"extensionDependencies": [
|
||||
"Microsoft.mssql",
|
||||
"Microsoft.schema-compare"
|
||||
"Microsoft.schema-compare",
|
||||
"Microsoft.data-workspace"
|
||||
],
|
||||
"contributes": {
|
||||
"projects": [
|
||||
"sqlproj"
|
||||
],
|
||||
"configuration": [
|
||||
{
|
||||
"title": "%sqlDatabaseProjects.Settings%",
|
||||
@@ -138,7 +143,7 @@
|
||||
"command": "sqlDatabaseProjects.importDatabase",
|
||||
"title": "%sqlDatabaseProjects.importDatabase%",
|
||||
"category": "%sqlDatabaseProjects.displayName%",
|
||||
"icon": "images/databaseProjectToolbar.svg"
|
||||
"icon": "images/databaseProjectToolbar.svg"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.addDatabaseReference",
|
||||
@@ -243,87 +248,87 @@
|
||||
"view/item/context": [
|
||||
{
|
||||
"command": "sqlDatabaseProjects.build",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "1_dbProjectsFirst@1"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.publish",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "1_dbProjectsFirst@2"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.schemaCompare",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "1_dbProjectsFirst@3"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newItem",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "2_dbProjects_newMain@1"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newFolder",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "2_dbProjects_newMain@2"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newTable",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@1"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newView",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@2"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newStoredProcedure",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@3"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newScript",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@7"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newPreDeploymentScript",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@8"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.newPostDeploymentScript",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder",
|
||||
"group": "3_dbProjects_newItem@9"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.addDatabaseReference",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.referencesRoot",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.referencesRoot",
|
||||
"group": "4_dbProjects_addDatabaseReference"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.exclude",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.folder || viewItem == databaseProject.itemType.file",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.folder || viewItem == databaseProject.itemType.file",
|
||||
"group": "9_dbProjectsLast@1"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.delete",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.folder || viewItem == databaseProject.itemType.file",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.folder || viewItem == databaseProject.itemType.file",
|
||||
"group": "9_dbProjectsLast@2"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.editProjectFile",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "9_dbProjectsLast@7"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.openContainingFolder",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "9_dbProjectsLast@8"
|
||||
},
|
||||
{
|
||||
"command": "sqlDatabaseProjects.close",
|
||||
"when": "view == sqlDatabaseProjectsView && viewItem == databaseProject.itemType.project",
|
||||
"when": "view =~ /^(sqlDatabaseProjectsView|dataworkspace.views.main)$/ && viewItem == databaseProject.itemType.project",
|
||||
"group": "9_dbProjectsLast@9"
|
||||
}
|
||||
],
|
||||
@@ -339,7 +344,6 @@
|
||||
"group": "export"
|
||||
}
|
||||
],
|
||||
|
||||
"dataExplorer/context": [
|
||||
{
|
||||
"command": "sqlDatabaseProjects.importDatabase",
|
||||
@@ -354,8 +358,8 @@
|
||||
],
|
||||
"dashboard/toolbar": [
|
||||
{
|
||||
"command": "sqlDatabaseProjects.importDatabase",
|
||||
"when": "connectionProvider == 'MSSQL' && mssql:engineedition != 11"
|
||||
"command": "sqlDatabaseProjects.importDatabase",
|
||||
"when": "connectionProvider == 'MSSQL' && mssql:engineedition != 11"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -22,6 +22,9 @@ export const msdbDacpac = 'msdb.dacpac';
|
||||
export const MicrosoftDatatoolsSchemaSqlSql = 'Microsoft.Data.Tools.Schema.Sql.Sql';
|
||||
export const databaseSchemaProvider = 'DatabaseSchemaProvider';
|
||||
|
||||
// Project Provider
|
||||
export const projectTypeDisplayName = localize('projectTypeDisplayName', 'Database Project');
|
||||
|
||||
// commands
|
||||
export const revealFileInOsCommand = 'revealFileInOS';
|
||||
export const schemaCompareStartCommand = 'schemaCompare.start';
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
import * as azdata from 'azdata';
|
||||
import * as vscode from 'vscode';
|
||||
import * as dataworkspace from 'dataworkspace';
|
||||
import * as templates from '../templates/templates';
|
||||
import * as constants from '../common/constants';
|
||||
import * as path from 'path';
|
||||
@@ -19,6 +20,7 @@ import { NetCoreTool } from '../tools/netcoreTool';
|
||||
import { Project } from '../models/project';
|
||||
import { FileNode, FolderNode } from '../models/tree/fileFolderTreeItem';
|
||||
import { IconPathHelper } from '../common/iconHelper';
|
||||
import { SqlDatabaseProjectProvider } from '../projectProvider/projectProvider';
|
||||
|
||||
const SQL_DATABASE_PROJECTS_VIEW_ID = 'sqlDatabaseProjectsView';
|
||||
|
||||
@@ -78,6 +80,7 @@ export default class MainController implements vscode.Disposable {
|
||||
vscode.commands.registerCommand('sqlDatabaseProjects.exclude', async (node: FileNode | FolderNode) => { await this.projectsController.exclude(node); });
|
||||
|
||||
IconPathHelper.setExtensionContext(this.extensionContext);
|
||||
this.registerProjectProvider();
|
||||
|
||||
// init view
|
||||
const treeView = vscode.window.createTreeView(SQL_DATABASE_PROJECTS_VIEW_ID, {
|
||||
@@ -190,6 +193,13 @@ export default class MainController implements vscode.Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
private registerProjectProvider(): void {
|
||||
const dataWorkspaceApi: dataworkspace.IExtension = <dataworkspace.IExtension>vscode.extensions.getExtension(dataworkspace.extension.name)?.exports;
|
||||
if (dataWorkspaceApi) {
|
||||
dataWorkspaceApi.registerProjectProvider(new SqlDatabaseProjectProvider());
|
||||
}
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
this.deactivate();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as dataworkspace from 'dataworkspace';
|
||||
import * as vscode from 'vscode';
|
||||
import { sqlprojExtension, projectTypeDisplayName } from '../common/constants';
|
||||
import { IconPathHelper } from '../common/iconHelper';
|
||||
import { SqlDatabaseProjectTreeViewProvider } from '../controllers/databaseProjectTreeViewProvider';
|
||||
import { Project } from '../models/project';
|
||||
import { BaseProjectTreeItem } from '../models/tree/baseTreeItem';
|
||||
|
||||
export class SqlDatabaseProjectProvider implements dataworkspace.IProjectProvider {
|
||||
|
||||
/**
|
||||
* Gets the project tree data provider
|
||||
* @param projectFilePath The project file path
|
||||
*/
|
||||
async getProjectTreeDataProvider(projectFilePath: string): Promise<vscode.TreeDataProvider<BaseProjectTreeItem>> {
|
||||
const provider = new SqlDatabaseProjectTreeViewProvider();
|
||||
const project = await Project.openProject(projectFilePath);
|
||||
provider.load([project]);
|
||||
return provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the supported project types
|
||||
*/
|
||||
get supportedProjectTypes(): dataworkspace.IProjectType[] {
|
||||
return [{
|
||||
projectFileExtension: sqlprojExtension.replace(/\./g, ''),
|
||||
displayName: projectTypeDisplayName,
|
||||
icon: IconPathHelper.databaseProject
|
||||
}];
|
||||
}
|
||||
}
|
||||
@@ -6,4 +6,5 @@
|
||||
/// <reference path='../../../../src/vs/vscode.d.ts'/>
|
||||
/// <reference path='../../../../src/sql/azdata.d.ts'/>
|
||||
/// <reference path='../../../../src/sql/azdata.proposed.d.ts'/>
|
||||
/// <reference path='../../../data-workspace/src/dataworkspace.d.ts'/>
|
||||
/// <reference types='@types/node'/>
|
||||
|
||||
Reference in New Issue
Block a user