From fef743517f7e14a195dd49d2e12a0fbea4a4c4b4 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 15 Jan 2018 18:05:52 +1100 Subject: [PATCH] Allows for passing in an Unknown object type to the IEntityService.GetIdForKey and GetKeyForId methods --- src/Umbraco.Core/Services/IdkMap.cs | 24 +++++++++++++++---- .../Services/EntityServiceTests.cs | 20 ++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Services/IdkMap.cs b/src/Umbraco.Core/Services/IdkMap.cs index 4f065c1d97..91367a6316 100644 --- a/src/Umbraco.Core/Services/IdkMap.cs +++ b/src/Umbraco.Core/Services/IdkMap.cs @@ -39,8 +39,16 @@ namespace Umbraco.Core.Services int? val; using (var uow = _uowProvider.GetUnitOfWork()) { - val = uow.Database.ExecuteScalar("SELECT id FROM umbracoNode WHERE uniqueId=@id AND (nodeObjectType=@type OR nodeObjectType=@reservation)", - new { id = key, type = GetNodeObjectTypeGuid(umbracoObjectType), reservation = Constants.ObjectTypes.IdReservationGuid }); + //if it's unknown don't include the nodeObjectType in the query + if (umbracoObjectType == UmbracoObjectTypes.Unknown) + { + val = uow.Database.ExecuteScalar("SELECT id FROM umbracoNode WHERE uniqueId=@id", new { id = key}); + } + else + { + val = uow.Database.ExecuteScalar("SELECT id FROM umbracoNode WHERE uniqueId=@id AND (nodeObjectType=@type OR nodeObjectType=@reservation)", + new { id = key, type = GetNodeObjectTypeGuid(umbracoObjectType), reservation = Constants.ObjectTypes.IdReservationGuid }); + } uow.Commit(); } @@ -92,8 +100,16 @@ namespace Umbraco.Core.Services Guid? val; using (var uow = _uowProvider.GetUnitOfWork()) { - val = uow.Database.ExecuteScalar("SELECT uniqueId FROM umbracoNode WHERE id=@id AND (nodeObjectType=@type OR nodeObjectType=@reservation)", - new { id, type = GetNodeObjectTypeGuid(umbracoObjectType), reservation = Constants.ObjectTypes.IdReservationGuid }); + //if it's unknown don't include the nodeObjectType in the query + if (umbracoObjectType == UmbracoObjectTypes.Unknown) + { + val = uow.Database.ExecuteScalar("SELECT uniqueId FROM umbracoNode WHERE id=@id", new { id }); + } + else + { + val = uow.Database.ExecuteScalar("SELECT uniqueId FROM umbracoNode WHERE id=@id AND (nodeObjectType=@type OR nodeObjectType=@reservation)", + new { id, type = GetNodeObjectTypeGuid(umbracoObjectType), reservation = Constants.ObjectTypes.IdReservationGuid }); + } uow.Commit(); } diff --git a/src/Umbraco.Tests/Services/EntityServiceTests.cs b/src/Umbraco.Tests/Services/EntityServiceTests.cs index 0dee46e07e..8867282155 100644 --- a/src/Umbraco.Tests/Services/EntityServiceTests.cs +++ b/src/Umbraco.Tests/Services/EntityServiceTests.cs @@ -533,6 +533,16 @@ namespace Umbraco.Tests.Services Assert.AreEqual(mediaObjectType, UmbracoObjectTypes.MediaType); } + [Test] + public void EntityService_Can_Get_Key_For_Id_With_Unknown_Type() + { + var service = ServiceContext.EntityService; + var result = service.GetKeyForId(1060, UmbracoObjectTypes.Unknown); + + Assert.IsTrue(result.Success); + Assert.AreEqual(Guid.Parse("1D3A8E6E-2EA9-4CC1-B229-1AEE19821522"), result.Result); + } + [Test] public void EntityService_Can_Get_Key_For_Id() { @@ -554,6 +564,16 @@ namespace Umbraco.Tests.Services Assert.IsFalse(result2.Success); } + [Test] + public void EntityService_Can_Get_Id_For_Key_With_Unknown_Type() + { + var service = ServiceContext.EntityService; + var result = service.GetIdForKey(Guid.Parse("1D3A8E6E-2EA9-4CC1-B229-1AEE19821522"), UmbracoObjectTypes.Unknown); + + Assert.IsTrue(result.Success); + Assert.AreEqual(1060, result.Result); + } + [Test] public void EntityService_Can_Get_Id_For_Key() {