diff --git a/extensions/mssql/src/contracts.ts b/extensions/mssql/src/contracts.ts index 5c33a8bb64..6034d81936 100644 --- a/extensions/mssql/src/contracts.ts +++ b/extensions/mssql/src/contracts.ts @@ -616,6 +616,14 @@ export namespace UpdateProjectForCrossPlatformRequest { export const type = new RequestType('sqlProjects/updateProjectForCrossPlatform'); } +export namespace GetProjectPropertiesRequest { + export const type = new RequestType('sqlProjects/getProjectProperties'); +} + +export namespace SetDatabaseSourceRequest { + export const type = new RequestType('sqlProjects/setDatabaseSource'); +} + //#endregion //#region File/folder functions @@ -794,6 +802,13 @@ export interface SqlProjectScriptParams extends SqlProjectParams { path: string; } +export interface SetDatabaseSourceParams extends SqlProjectParams { + /** + * Source of the database schema, used in telemetry + */ + databaseSource: 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 29981f16f5..bd0b9dcfb9 100644 --- a/extensions/mssql/src/mssql.d.ts +++ b/extensions/mssql/src/mssql.d.ts @@ -465,6 +465,19 @@ declare module 'mssql' { */ updateProjectForCrossPlatform(projectUri: string): Promise; + /** + * Set the DatabaseSource property of a .sqlproj file + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSource Source of the database schema, used in telemetry + */ + setDatabaseSource(projectUri: string, databaseSource: string): Promise; + + /** + * Get the cross-platform compatibility status for a project + * @param projectUri Absolute path of the project, including .sqlproj + */ + getProjectProperties(projectUri: string): Promise; + /** * Add a SQLCMD variable to a project * @param projectUri Absolute path of the project, including .sqlproj @@ -637,6 +650,34 @@ declare module 'mssql' { scripts: string[]; } + export interface GetProjectPropertiesResult extends azdata.ResultStatus { + /** + * GUID for the SQL project + */ + projectGuid: string; + /** + * Build configuration, defaulted to Debug if not specified + */ + configuration: string; + /** + * Build platform, defaulted to AnyCPU if not specified + */ + platform: string; + /** + * Output path for build, defaulted to "bin/Debug" if not specified. + May be absolute or relative. + */ + outputPath: string; + /** + * Default collation for the project, defaulted to SQL_Latin1_General_CP1_CI_AS if not specified + */ + defaultCollation: string; + /** + * Source of the database schema, used in telemetry + */ + databaseSource?: string; + } + //#endregion //#region Types diff --git a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts index 98d80e2a19..c2a3bf7890 100644 --- a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts +++ b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts @@ -238,6 +238,25 @@ export class SqlProjectsService implements mssql.ISqlProjectsService { return await this.runWithErrorHandling(contracts.UpdateProjectForCrossPlatformRequest.type, params); } + /** + * Get the cross-platform compatibility status for a project + * @param projectUri Absolute path of the project, including .sqlproj + */ + public async getProjectProperties(projectUri: string): Promise { + const params: contracts.SqlProjectParams = { projectUri: projectUri }; + return await this.runWithErrorHandling(contracts.GetProjectPropertiesRequest.type, params); + } + + /** + * Set the DatabaseSource property of a .sqlproj file + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSource Source of the database schema, used in telemetry + */ + public async setDatabaseSource(projectUri: string, databaseSource: string): Promise { + const params: contracts.SetDatabaseSourceParams = { projectUri: projectUri, databaseSource: databaseSource }; + return await this.runWithErrorHandling(contracts.SetDatabaseSourceRequest.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 46ca3453d0..9f7da39868 100644 --- a/extensions/types/vscode-mssql.d.ts +++ b/extensions/types/vscode-mssql.d.ts @@ -585,6 +585,19 @@ declare module 'vscode-mssql' { */ updateProjectForCrossPlatform(projectUri: string): Promise; + /** + * Set the DatabaseSource property of a .sqlproj file + * @param projectUri Absolute path of the project, including .sqlproj + * @param databaseSource Source of the database schema, used in telemetry + */ + setDatabaseSource(projectUri: string, databaseSource: string): Promise; + + /** + * Get the cross-platform compatibility status for a project + * @param projectUri Absolute path of the project, including .sqlproj + */ + getProjectProperties(projectUri: string): Promise; + /** * Add a SQLCMD variable to a project * @param projectUri Absolute path of the project, including .sqlproj @@ -718,6 +731,34 @@ declare module 'vscode-mssql' { isCrossPlatformCompatible: boolean; } + export interface GetProjectPropertiesResult extends ResultStatus { + /** + * GUID for the SQL project + */ + projectGuid: string; + /** + * Build configuration, defaulted to Debug if not specified + */ + configuration: string; + /** + * Build platform, defaulted to AnyCPU if not specified + */ + platform: string; + /** + * Output path for build, defaulted to "bin/Debug" if not specified. + May be absolute or relative. + */ + outputPath: string; + /** + * Default collation for the project, defaulted to SQL_Latin1_General_CP1_CI_AS if not specified + */ + defaultCollation: string; + /** + * Source of the database schema, used in telemetry + */ + databaseSource?: string; + } + export interface GetDatabaseReferencesResult extends ResultStatus { /** * Array of system database references contained in the project