Add support for adding system db references as PackageReference (#2078)

* Expose adding system db references as PackageReference

* update nuget
This commit is contained in:
Kim Santiago
2023-06-01 11:38:28 -07:00
committed by GitHub
parent 0a5a7b4cc5
commit a12244f3d0
6 changed files with 33 additions and 8 deletions

View File

@@ -23,7 +23,7 @@
<PackageReference Update="Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider" Version="1.1.1" />
<PackageReference Update="Microsoft.SqlServer.Management.SmoMetadataProvider" Version="170.12.0" />
<PackageReference Update="Microsoft.SqlServer.DacFx" Version="162.0.34-preview" />
<PackageReference Update="Microsoft.SqlServer.DacFx.Projects" Version="162.1.20-alpha" />
<PackageReference Update="Microsoft.SqlServer.DacFx.Projects" Version="162.1.37-alpha" />
<PackageReference Update="Microsoft.Azure.Kusto.Data" Version="9.0.4" />
<PackageReference Update="Microsoft.Azure.Kusto.Language" Version="9.0.4" />
<PackageReference Update="Microsoft.SqlServer.Assessment" Version="[1.1.17]" />

View File

@@ -18,6 +18,11 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts
/// Type of system database
/// </summary>
public SystemDatabase SystemDatabase { get; set; }
/// <summary>
/// Type of reference - ArtifactReference or PackageReference
/// </summary>
public ReferenceType ReferenceType { get; set; }
}
/// <summary>

View File

@@ -385,7 +385,8 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects
new SystemDatabaseReference(
requestParams.SystemDatabase,
requestParams.SuppressMissingDependencies,
requestParams.DatabaseLiteral)),
requestParams.DatabaseLiteral,
requestParams.ReferenceType)),
requestContext);
}

View File

@@ -527,21 +527,40 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects
{
var (service, projectUri, _, _) = await SetUpDatabaseReferenceTest();
// Artifact reference
MockRequest<ResultStatus> requestMock = new();
await service.HandleAddSystemDatabaseReferenceRequest(new AddSystemDatabaseReferenceParams()
{
ProjectUri = projectUri,
SystemDatabase = SystemDatabase.MSDB,
DatabaseLiteral = "EmEssDeeBee",
SuppressMissingDependencies = false
SuppressMissingDependencies = false,
ReferenceType = ReferenceType.ArtifactReference
}, requestMock.Object);
requestMock.AssertSuccess(nameof(service.HandleAddSystemDatabaseReferenceRequest));
Assert.AreEqual(1, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding system db reference");
SystemDatabaseReference systemDbRef = (SystemDatabaseReference)service.Projects[projectUri].DatabaseReferences.Get(SystemDatabase.MSDB.ToString());
Assert.AreEqual(SystemDatabase.MSDB, systemDbRef.SystemDb, "Referenced system DB");
Assert.AreEqual("EmEssDeeBee", systemDbRef.DatabaseVariableLiteralName);
Assert.IsFalse(systemDbRef.SuppressMissingDependencies, nameof(systemDbRef.SuppressMissingDependencies));
Assert.AreEqual(1, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding system db reference to msdb");
SystemDatabaseReference msdbRef = (SystemDatabaseReference)service.Projects[projectUri].DatabaseReferences.Get(SystemDatabase.MSDB.ToString());
Assert.AreEqual(SystemDatabase.MSDB, msdbRef.SystemDb, "Referenced system DB");
Assert.AreEqual("EmEssDeeBee", msdbRef.DatabaseVariableLiteralName);
Assert.IsFalse(msdbRef.SuppressMissingDependencies, nameof(msdbRef.SuppressMissingDependencies));
Assert.AreEqual(ReferenceType.ArtifactReference, msdbRef.ReferenceType);
// Package reference
await service.HandleAddSystemDatabaseReferenceRequest(new AddSystemDatabaseReferenceParams()
{
ProjectUri = projectUri,
SystemDatabase = SystemDatabase.Master,
SuppressMissingDependencies = false,
ReferenceType = ReferenceType.PackageReference
}, requestMock.Object);
requestMock.AssertSuccess(nameof(service.HandleAddSystemDatabaseReferenceRequest));
Assert.AreEqual(2, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding system db reference to master");
SystemDatabaseReference masterRef = (SystemDatabaseReference)service.Projects[projectUri].DatabaseReferences.Get(SystemDatabase.Master.ToString());
Assert.AreEqual(SystemDatabase.Master, masterRef.SystemDb, "Referenced system DB");
Assert.IsFalse(masterRef.SuppressMissingDependencies, nameof(masterRef.SuppressMissingDependencies));
Assert.AreEqual(ReferenceType.PackageReference, masterRef.ReferenceType);
}
[Test]