From 5fef212ea3e183317b1102c157c9c36fb685fc20 Mon Sep 17 00:00:00 2001 From: Kim Santiago <31145923+kisantia@users.noreply.github.com> Date: Fri, 3 Mar 2023 16:52:05 -0800 Subject: [PATCH] add vscode mssql handling for getSqlProjectsService() (#22121) * add vscode mssql handling for getSqlProjectsService() * try to fix error because of projectStyle enum --- .../sql-database-projects/src/common/utils.ts | 16 ++++++++++------ .../src/controllers/projectController.ts | 11 ++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/extensions/sql-database-projects/src/common/utils.ts b/extensions/sql-database-projects/src/common/utils.ts index e6839b03bb..c5f6c1f400 100644 --- a/extensions/sql-database-projects/src/common/utils.ts +++ b/extensions/sql-database-projects/src/common/utils.ts @@ -279,6 +279,7 @@ export function getDataWorkspaceExtensionApi(): dataworkspace.IExtension { export type IDacFxService = mssql.IDacFxService | vscodeMssql.IDacFxService; export type ISchemaCompareService = mssql.ISchemaCompareService | vscodeMssql.ISchemaCompareService; +export type ISqlProjectsService = mssql.ISqlProjectsService | vscodeMssql.ISqlProjectsService; export async function getDacFxService(): Promise { if (getAzdataApi()) { @@ -302,12 +303,15 @@ export async function getSchemaCompareService(): Promise } } -export async function getSqlProjectsService(): Promise { - const ext = vscode.extensions.getExtension(mssql.extension.name) as vscode.Extension; - const api = await ext.activate(); - return api.sqlProjects; - - // TODO: add vscode-mssql support +export async function getSqlProjectsService(): Promise { + if (getAzdataApi()) { + const ext = vscode.extensions.getExtension(mssql.extension.name) as vscode.Extension; + const api = await ext.activate(); + return api.sqlProjects; + } else { + const api = await getVscodeMssqlApi(); + return api.sqlProjects; + } } export async function getVscodeMssqlApi(): Promise { diff --git a/extensions/sql-database-projects/src/controllers/projectController.ts b/extensions/sql-database-projects/src/controllers/projectController.ts index 3c2651c88d..f1902e60a1 100644 --- a/extensions/sql-database-projects/src/controllers/projectController.ts +++ b/extensions/sql-database-projects/src/controllers/projectController.ts @@ -13,7 +13,7 @@ import * as templates from '../templates/templates'; import * as vscode from 'vscode'; import type * as azdataType from 'azdata'; import * as dataworkspace from 'dataworkspace'; -import type * as mssqlVscode from 'vscode-mssql'; +import * as mssqlVscode from 'vscode-mssql'; import { promises as fs } from 'fs'; import { PublishDatabaseDialog } from '../dialogs/publishDatabaseDialog'; @@ -183,7 +183,6 @@ export class ProjectsController { } const targetPlatform = creationParams.targetPlatform ? constants.targetPlatformToVersion.get(creationParams.targetPlatform)! : constants.defaultDSP; - const sdkStyle = creationParams.sdkStyle ? mssql.ProjectType.SdkStyle : mssql.ProjectType.LegacyStyle; let newProjFileName = creationParams.newProjName; @@ -198,7 +197,13 @@ export class ProjectsController { } const sqlProjectsService = await utils.getSqlProjectsService(); - await sqlProjectsService.createProject(newProjFilePath, sdkStyle, targetPlatform); + if (utils.getAzdataApi()) { + const projectStyle = creationParams.sdkStyle ? mssql.ProjectType.SdkStyle : mssql.ProjectType.LegacyStyle; + await (sqlProjectsService as mssql.ISqlProjectsService).createProject(newProjFilePath, projectStyle, targetPlatform); + } else { + const projectStyle = creationParams.sdkStyle ? mssqlVscode.ProjectType.SdkStyle : mssqlVscode.ProjectType.LegacyStyle; + await (sqlProjectsService as mssqlVscode.ISqlProjectsService).createProject(newProjFilePath, projectStyle, targetPlatform); + } await this.addTemplateFiles(newProjFilePath, creationParams.projectTypeId);