diff --git a/extensions/mssql/config.json b/extensions/mssql/config.json index 39f50a744e..14995090e2 100644 --- a/extensions/mssql/config.json +++ b/extensions/mssql/config.json @@ -1,6 +1,6 @@ { "downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/{#version#}/microsoft.sqltools.servicelayer-{#fileName#}", - "version": "4.5.0.36", + "version": "4.5.0.38", "downloadFileNames": { "Windows_86": "win-x86-net7.0.zip", "Windows_64": "win-x64-net7.0.zip", diff --git a/extensions/mssql/src/contracts.ts b/extensions/mssql/src/contracts.ts index 6034d81936..b9b9161289 100644 --- a/extensions/mssql/src/contracts.ts +++ b/extensions/mssql/src/contracts.ts @@ -624,6 +624,10 @@ export namespace SetDatabaseSourceRequest { export const type = new RequestType('sqlProjects/setDatabaseSource'); } +export namespace SetDatabaseSchemaProviderRequest { + export const type = new RequestType('sqlProjects/setDatabaseSchemaProvider'); +} + //#endregion //#region File/folder functions @@ -717,23 +721,23 @@ export namespace GetPreDeploymentScriptsRequest { //#region None functions export namespace AddNoneItemRequest { - export const type = new RequestType('sqlProjects/addNoneScript'); + export const type = new RequestType('sqlProjects/addNoneItem'); } export namespace DeleteNoneItemRequest { - export const type = new RequestType('sqlProjects/deleteNoneScript'); + export const type = new RequestType('sqlProjects/deleteNoneItem'); } export namespace ExcludeNoneItemRequest { - export const type = new RequestType('sqlProjects/excludeNoneScript'); + export const type = new RequestType('sqlProjects/excludeNoneItem'); } export namespace GetNoneItemsRequest { - export const type = new RequestType('sqlProjects/getNoneScripts'); + export const type = new RequestType('sqlProjects/getNoneItems'); } export namespace MoveNoneItemRequest { - export const type = new RequestType('sqlProjects/moveNoneScript'); + export const type = new RequestType('sqlProjects/moveNoneItem'); } //#endregion @@ -809,6 +813,13 @@ export interface SetDatabaseSourceParams extends SqlProjectParams { databaseSource: string; } +export interface SetDatabaseSchemaProviderParams extends SqlProjectParams { + /** + * New DatabaseSchemaProvider value, in the form "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + */ + databaseSchemaProvider: string; +} + export interface AddDacpacReferenceParams extends AddUserDatabaseReferenceParams { /** * Path to the .dacpac file diff --git a/extensions/mssql/src/mssql.d.ts b/extensions/mssql/src/mssql.d.ts index bd0b9dcfb9..6907cb41ab 100644 --- a/extensions/mssql/src/mssql.d.ts +++ b/extensions/mssql/src/mssql.d.ts @@ -472,6 +472,13 @@ declare module 'mssql' { */ setDatabaseSource(projectUri: string, databaseSource: string): Promise; + /** + * Set the DatabaseSchemaProvider property of a SQL project + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSchemaProvider New DatabaseSchemaProvider value, in the form "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + */ + setDatabaseSchemaProvider(projectUri: string, databaseSchemaProvider: string): Promise; + /** * Get the cross-platform compatibility status for a project * @param projectUri Absolute path of the project, including .sqlproj @@ -676,6 +683,14 @@ declare module 'mssql' { * Source of the database schema, used in telemetry */ databaseSource?: string; + /** + * Style of the .sqlproj file - SdkStyle or LegacyStyle + */ + projectStyle: ProjectType; + /** + * Database Schema Provider, in the format "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + */ + databaseSchemaProvider: string } //#endregion diff --git a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts index c2a3bf7890..a484e9f5aa 100644 --- a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts +++ b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts @@ -257,6 +257,16 @@ export class SqlProjectsService implements mssql.ISqlProjectsService { return await this.runWithErrorHandling(contracts.SetDatabaseSourceRequest.type, params); } + /** + * Set the DatabaseSchemaProvider property of a SQL project + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSchemaProvider New DatabaseSchemaProvider value, in the form "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + */ + public async setDatabaseSchemaProvider(projectUri: string, databaseSchemaProvider: string): Promise { + const params: contracts.SetDatabaseSchemaProviderParams = { projectUri: projectUri, databaseSchemaProvider: databaseSchemaProvider }; + return await this.runWithErrorHandling(contracts.SetDatabaseSchemaProviderRequest.type, params); + } + /** * Add a SQLCMD variable to a project * @param projectUri Absolute path of the project, including .sqlproj diff --git a/extensions/types/vscode-mssql.d.ts b/extensions/types/vscode-mssql.d.ts index 9f7da39868..c057f83455 100644 --- a/extensions/types/vscode-mssql.d.ts +++ b/extensions/types/vscode-mssql.d.ts @@ -592,6 +592,13 @@ declare module 'vscode-mssql' { */ setDatabaseSource(projectUri: string, databaseSource: string): Promise; + /** + * Set the DatabaseSchemaProvider property of a SQL project + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSchemaProvider New DatabaseSchemaProvider value, in the form "Microsoft.Data.Tools.Schema.Sql.SqlXYZDatabaseSchemaProvider" + */ + setDatabaseSchemaProvider(projectUri: string, databaseSchemaProvider: string): Promise; + /** * Get the cross-platform compatibility status for a project * @param projectUri Absolute path of the project, including .sqlproj