diff --git a/extensions/mssql/src/contracts.ts b/extensions/mssql/src/contracts.ts index 609e2ae5dc..a6a7122d2c 100644 --- a/extensions/mssql/src/contracts.ts +++ b/extensions/mssql/src/contracts.ts @@ -790,6 +790,10 @@ export namespace AddSystemDatabaseReferenceRequest { export const type = new RequestType('sqlprojects/addSystemDatabaseReference'); } +export namespace AddNugetPackageReferenceRequest { + export const type = new RequestType('sqlprojects/addNugetPackageReference'); +} + export namespace DeleteDatabaseReferenceRequest { export const type = new RequestType('sqlprojects/deleteDatabaseReference'); } @@ -839,6 +843,18 @@ export interface AddDacpacReferenceParams extends AddUserDatabaseReferenceParams dacpacPath: string; } +export interface AddNugetPackageReferenceParams extends AddUserDatabaseReferenceParams { + /** + * NuGet package name + */ + packageName: string; + + /** + * NuGet package version + */ + packageVersion: string; +} + export interface AddDatabaseReferenceParams extends SqlProjectParams { /** * Whether to suppress missing dependencies diff --git a/extensions/mssql/src/mssql.d.ts b/extensions/mssql/src/mssql.d.ts index ac570d4fb4..9e3da7fe98 100644 --- a/extensions/mssql/src/mssql.d.ts +++ b/extensions/mssql/src/mssql.d.ts @@ -352,6 +352,19 @@ declare module 'mssql' { */ addSystemDatabaseReference(projectUri: string, systemDatabase: SystemDatabase, suppressMissingDependencies: boolean, databaseLiteral?: string): Promise; + /** + * Add a nuget package database reference to a project + * @param projectUri Absolute path of the project, including .sqlproj + * @param packageName Name of the referenced nuget package + * @param packageVersion Version of the referenced nuget package + * @param suppressMissingDependencies Whether to suppress missing dependencies + * @param databaseVariable SQLCMD variable name for specifying the other database this reference is to, if different from that of the current project + * @param serverVariable SQLCMD variable name for specifying the other server this reference is to, if different from that of the current project. + If this is set, DatabaseVariable must also be set. + * @param databaseLiteral Literal name used to reference another database in the same server, if not using SQLCMD variables + */ + addNugetPackageReference(projectUri: string, packageName: string, packageVersion: string, suppressMissingDependencies: boolean, databaseVariable?: string, serverVariable?: string, databaseLiteral?: string): Promise; + /** * Delete a database reference from a project * @param projectUri Absolute path of the project, including .sqlproj @@ -626,6 +639,10 @@ declare module 'mssql' { * Array of SQL project references contained in the project */ sqlProjectReferences: SqlProjectReference[]; + /** + * Array of NuGet package references contained in the project + */ + nugetPackageReferences: NugetPackageReference[]; } export interface GetFoldersResult extends azdata.ResultStatus { @@ -724,6 +741,11 @@ declare module 'mssql' { dacpacPath: string; } + export interface NugetPackageReference extends UserDatabaseReference { + packageName: string; + packageVersion: string; + } + export const enum SystemDatabase { Master = 0, MSDB = 1 diff --git a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts index 92dfec0d3e..8a1d1223d9 100644 --- a/extensions/mssql/src/sqlProjects/sqlProjectsService.ts +++ b/extensions/mssql/src/sqlProjects/sqlProjectsService.ts @@ -77,6 +77,21 @@ export class SqlProjectsService extends BaseService implements mssql.ISqlProject return await this.runWithErrorHandling(contracts.AddSystemDatabaseReferenceRequest.type, params); } + /** + * Add a nuget package database reference to a project + * @param projectUri Absolute path of the project, including .sqlproj + * @param packageName Name of the referenced nuget package + * @param packageVersion Version of the referenced nuget package + * @param suppressMissingDependencies Whether to suppress missing dependencies + * @param databaseVariable SQLCMD variable name for specifying the other database this reference is to, if different from that of the current project + * @param serverVariable SQLCMD variable name for specifying the other server this reference is to, if different from that of the current project. If this is set, DatabaseVariable must also be set. + * @param databaseLiteral Literal name used to reference another database in the same server, if not using SQLCMD variables + */ + public async addNugetPackageReference(projectUri: string, packageName: string, packageVersion: string, suppressMissingDependencies: boolean, databaseVariable?: string, serverVariable?: string, databaseLiteral?: string): Promise { + const params: contracts.AddNugetPackageReferenceParams = { projectUri: projectUri, packageName: packageName, packageVersion: packageVersion, suppressMissingDependencies: suppressMissingDependencies, databaseVariable: databaseVariable, serverVariable: serverVariable, databaseLiteral: databaseLiteral }; + return await this.runWithErrorHandling(contracts.AddNugetPackageReferenceRequest.type, params); + } + /** * Delete a database reference from a project * @param projectUri Absolute path of the project, including .sqlproj