From 312e2fa9492b27dd0bf5757e5fe033c6de344500 Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Thu, 30 Jul 2020 17:12:18 +0200 Subject: [PATCH] Fetch membergroup by guid (#8496) --- .../Repositories/IMemberGroupRepository.cs | 10 +++++++++- .../Repositories/Implement/MemberGroupRepository.cs | 12 +++++++++++- .../Services/Implement/MemberGroupService.cs | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs index 9c75c051bd..d63b1bb9db 100644 --- a/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IMemberGroupRepository.cs @@ -1,10 +1,18 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Umbraco.Core.Models; namespace Umbraco.Core.Persistence.Repositories { public interface IMemberGroupRepository : IReadWriteQueryRepository { + /// + /// Gets a member group by it's uniqueId + /// + /// + /// + IMemberGroup Get(Guid uniqueId); + /// /// Gets a member group by it's name /// diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs index c138550de5..edd6dc0ebb 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs @@ -69,7 +69,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoNode.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Node}.id = @id"; } protected override IEnumerable GetDeleteClauses() @@ -115,6 +115,16 @@ namespace Umbraco.Core.Persistence.Repositories.Implement entity.ResetDirtyProperties(); } + public IMemberGroup Get(Guid uniqueId) + { + var sql = GetBaseQuery(false); + sql.Where("umbracoNode.uniqueId = @uniqueId", new { uniqueId }); + + var dto = Database.Fetch(SqlSyntax.SelectTop(sql, 1)).FirstOrDefault(); + + return dto == null ? null : MemberGroupFactory.BuildEntity(dto); + } + public IMemberGroup GetByName(string name) { return IsolatedCache.GetCacheItem( diff --git a/src/Umbraco.Core/Services/Implement/MemberGroupService.cs b/src/Umbraco.Core/Services/Implement/MemberGroupService.cs index d0f40f83a7..308080bbf4 100644 --- a/src/Umbraco.Core/Services/Implement/MemberGroupService.cs +++ b/src/Umbraco.Core/Services/Implement/MemberGroupService.cs @@ -74,7 +74,7 @@ namespace Umbraco.Core.Services.Implement { using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { - return _memberGroupRepository.GetMany().FirstOrDefault(x => x.Key == id); + return _memberGroupRepository.Get(id); } }