diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs index 84ff426e91..270e406a24 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs @@ -20,6 +20,7 @@ using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; +using static Umbraco.Core.Persistence.NPocoSqlExtensions.Statics; namespace Umbraco.Core.Persistence.Repositories.Implement { @@ -852,7 +853,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected virtual string EnsureUniqueNodeName(int parentId, string nodeName, int id = 0) { var template = SqlContext.Templates.Get("Umbraco.Core.VersionableRepository.EnsureUniqueNodeName", tsql => tsql - .Select(x => NPocoSqlExtensions.Statics.Alias(x.NodeId, "id"), x => NPocoSqlExtensions.Statics.Alias(x.Text, "name")) + .Select(x => Alias(x.NodeId, "id"), x => Alias(x.Text, "name")) .From() .Where(x => x.NodeObjectType == SqlTemplate.Arg("nodeObjectType") && x.ParentId == SqlTemplate.Arg("parentId"))); diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs index 86444a4cc3..4556c78fe6 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DataTypeRepository.cs @@ -15,6 +15,7 @@ using Umbraco.Core.Persistence.Querying; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; using Umbraco.Core.Services; +using static Umbraco.Core.Persistence.NPocoSqlExtensions.Statics; namespace Umbraco.Core.Persistence.Repositories.Implement { @@ -280,7 +281,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private string EnsureUniqueNodeName(string nodeName, int id = 0) { var template = SqlContext.Templates.Get("Umbraco.Core.DataTypeDefinitionRepository.EnsureUniqueNodeName", tsql => tsql - .Select(x => NPocoSqlExtensions.Statics.Alias(x.NodeId, "id"), x => NPocoSqlExtensions.Statics.Alias(x.Text, "name")) + .Select(x => Alias(x.NodeId, "id"), x => Alias(x.Text, "name")) .From() .Where(x => x.NodeObjectType == SqlTemplate.Arg("nodeObjectType"))); diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs index cb0d19cc2e..09711cf9e1 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; +using static Umbraco.Core.Persistence.NPocoSqlExtensions.Statics; namespace Umbraco.Core.Persistence.Repositories.Implement { @@ -128,7 +129,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var dtos = page.Items; var entities = dtos.Select(x => BuildEntity(isContent, isMedia, x)).ToArray(); - //TODO: For isContent will we need to build up the variation info? + //TODO: For isContent will we need to build up the variation info? if (isMedia) BuildProperties(entities, dtos); @@ -144,35 +145,36 @@ namespace Umbraco.Core.Persistence.Repositories.Implement return dto == null ? null : BuildEntity(false, false, dto); } + private IEntitySlim GetEntity(Sql sql, bool isContent, bool isMedia) + { + //isContent is going to return a 1:M result now with the variants so we need to do different things + if (isContent) + { + var dtos = Database.FetchOneToMany( + ddto => ddto.VariationInfo, + ddto => ddto.VersionId, + sql); + return dtos.Count == 0 ? null : BuildDocumentEntity(dtos[0]); + } + + var dto = Database.FirstOrDefault(sql); + if (dto == null) return null; + + var entity = BuildEntity(false, isMedia, dto); + + if (isMedia) + BuildProperties(entity, dto); + + return entity; + } + public IEntitySlim Get(Guid key, Guid objectTypeId) { var isContent = objectTypeId == Constants.ObjectTypes.Document || objectTypeId == Constants.ObjectTypes.DocumentBlueprint; var isMedia = objectTypeId == Constants.ObjectTypes.Media; var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, key); - - //isContent is going to return a 1:M result now with the variants so we need to do different things - if (isContent) - { - var dtos = Database.FetchOneToMany( - dto => dto.VariationInfo, - dto => dto.VersionId, - sql); - if (dtos.Count == 0) return null; - return BuildDocumentEntity(dtos[0]); - } - else - { - var dto = Database.FirstOrDefault(sql); - if (dto == null) return null; - - var entity = BuildEntity(isContent, isMedia, dto); - - if (isMedia) - BuildProperties(entity, dto); - - return entity; - } + return GetEntity(sql, isContent, isMedia); } public virtual IEntitySlim Get(int id) @@ -188,30 +190,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var isMedia = objectTypeId == Constants.ObjectTypes.Media; var sql = GetFullSqlForEntityType(isContent, isMedia, objectTypeId, id); - - //isContent is going to return a 1:M result now with the variants so we need to do different things - if (isContent) - { - var dtos = Database.FetchOneToMany( - dto => dto.VariationInfo, - dto => dto.VersionId, - sql); - if (dtos.Count == 0) return null; - return BuildDocumentEntity(dtos[0]); - } - else - { - var dto = Database.FirstOrDefault(sql); - if (dto == null) return null; - - var entity = BuildEntity(isContent, isMedia, dto); - - if (isMedia) - BuildProperties(entity, dto); - - return entity; - } - + return GetEntity(sql, isContent, isMedia); } public virtual IEnumerable GetAll(Guid objectType, params int[] ids) @@ -228,36 +207,38 @@ namespace Umbraco.Core.Persistence.Repositories.Implement : PerformGetAll(objectType); } + private IEnumerable GetEntities(Sql sql, bool isContent, bool isMedia) + { + //isContent is going to return a 1:M result now with the variants so we need to do different things + if (isContent) + { + var cdtos = Database.FetchOneToMany( + dto => dto.VariationInfo, + dto => dto.VersionId, + sql); + return cdtos.Count == 0 + ? Enumerable.Empty() + : cdtos.Select(BuildDocumentEntity).ToArray(); + } + + var dtos = Database.Fetch(sql); + if (dtos.Count == 0) return Enumerable.Empty(); + + var entities = dtos.Select(x => BuildEntity(false, isMedia, x)).ToArray(); + + if (isMedia) + BuildProperties(entities, dtos); + + return entities; + } + private IEnumerable PerformGetAll(Guid objectType, Action> filter = null) { var isContent = objectType == Constants.ObjectTypes.Document || objectType == Constants.ObjectTypes.DocumentBlueprint; var isMedia = objectType == Constants.ObjectTypes.Media; var sql = GetFullSqlForEntityType(isContent, isMedia, objectType, filter); - - //isContent is going to return a 1:M result now with the variants so we need to do different things - if (isContent) - { - var dtos = Database.FetchOneToMany( - dto => dto.VariationInfo, - dto => dto.VersionId, - sql); - if (dtos.Count == 0) return Enumerable.Empty(); - var entities = dtos.Select(x => BuildDocumentEntity(x)).ToArray(); - return entities; - } - else - { - var dtos = Database.Fetch(sql); - if (dtos.Count == 0) return Enumerable.Empty(); - - var entities = dtos.Select(x => BuildEntity(isContent, isMedia, x)).ToArray(); - - if (isMedia) - BuildProperties(entities, dtos); - - return entities; - } + return GetEntities(sql, isContent, isMedia); } public virtual IEnumerable GetAllPaths(Guid objectType, params int[] ids) @@ -302,30 +283,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement sql = translator.Translate(); sql = AddGroupBy(isContent, isMedia, sql); - //isContent is going to return a 1:M result now with the variants so we need to do different things - if (isContent) - { - var dtos = Database.FetchOneToMany( - dto => dto.VariationInfo, - dto => dto.VersionId, - sql); - if (dtos.Count == 0) return Enumerable.Empty(); - var entities = dtos.Select(x => BuildDocumentEntity(x)).ToArray(); - return entities; - } - else - { - var dtos = Database.Fetch(sql); - - if (dtos.Count == 0) return Enumerable.Empty(); - - var entities = dtos.Select(x => BuildEntity(isContent, isMedia, x)).ToArray(); - - if (isMedia) - BuildProperties(entities, dtos); - - return entities; - } + return GetEntities(sql, isContent, isMedia); } public UmbracoObjectTypes GetObjectType(int id) @@ -554,9 +512,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement .AndSelect(x => x.Published, x => x.Edited) //This MUST come last in the select statements since we will end up with a 1:M query .AndSelect( - x => NPocoSqlExtensions.Statics.Alias(x.Id, "versionCultureId"), - x => NPocoSqlExtensions.Statics.Alias(x.LanguageId, "versionCultureLangId"), - x => NPocoSqlExtensions.Statics.Alias(x.Name, "versionCultureName")); + x => Alias(x.Id, "versionCultureId"), + x => Alias(x.LanguageId, "versionCultureLangId"), + x => Alias(x.Name, "versionCultureName")); } }