From 9f3eddf95f93f6a0d7cabf212110676f719f4e1d Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Fri, 6 Aug 2021 11:32:16 +0200 Subject: [PATCH] Refactor NPoco queries to use constants and dtos (#10654) --- src/Umbraco.Core/Persistence/Dtos/DictionaryDto.cs | 1 + .../Repositories/Implement/ContentTypeRepository.cs | 4 ++-- .../Repositories/Implement/DictionaryRepository.cs | 6 +++--- .../Repositories/Implement/DomainRepository.cs | 6 +++--- .../Implement/ExternalLoginRepository.cs | 2 +- .../Repositories/Implement/LanguageRepository.cs | 12 ++++++------ .../Repositories/Implement/MacroRepository.cs | 4 ++-- .../Repositories/Implement/MediaTypeRepository.cs | 2 +- .../Repositories/Implement/MemberGroupRepository.cs | 7 ++++--- .../Repositories/Implement/MemberRepository.cs | 4 +++- .../Repositories/Implement/MemberTypeRepository.cs | 2 +- .../Repositories/Implement/PublicAccessRepository.cs | 4 ++-- .../Repositories/Implement/RelationRepository.cs | 2 +- .../Repositories/Implement/RelationTypeRepository.cs | 2 +- .../Repositories/Implement/TemplateRepository.cs | 2 +- .../Repositories/Implement/UserGroupRepository.cs | 2 +- .../Repositories/Implement/UserRepository.cs | 2 +- 17 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Dtos/DictionaryDto.cs b/src/Umbraco.Core/Persistence/Dtos/DictionaryDto.cs index d357e9adbc..36d0d76c09 100644 --- a/src/Umbraco.Core/Persistence/Dtos/DictionaryDto.cs +++ b/src/Umbraco.Core/Persistence/Dtos/DictionaryDto.cs @@ -11,6 +11,7 @@ namespace Umbraco.Core.Persistence.Dtos internal class DictionaryDto { public const string TableName = Constants.DatabaseSchema.Tables.DictionaryEntry; + [Column("pk")] [PrimaryKeyColumn] public int PrimaryKey { get; set; } diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentTypeRepository.cs index 6571a847a9..0dcbc72fca 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentTypeRepository.cs @@ -134,7 +134,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement if (objectTypes.Any()) { - sql = sql.Where("umbracoNode.nodeObjectType IN (@objectTypes)", new { objectTypes = objectTypes }); + sql = sql.WhereIn(dto => dto.NodeObjectType, objectTypes); } return Database.Fetch(sql); @@ -173,7 +173,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() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DictionaryRepository.cs index 0e3521f8bc..ac1f7c3f2a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DictionaryRepository.cs @@ -58,10 +58,10 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override IEnumerable PerformGetAll(params int[] ids) { - var sql = GetBaseQuery(false).Where("cmsDictionary.pk > 0"); + var sql = GetBaseQuery(false).Where(x => x.PrimaryKey > 0); if (ids.Any()) { - sql.Where("cmsDictionary.pk in (@ids)", new { /*ids =*/ ids }); + sql.WhereIn(x => x.PrimaryKey, ids); } return Database @@ -105,7 +105,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "cmsDictionary.pk = @id"; + return $"{Constants.DatabaseSchema.Tables.DictionaryEntry}.pk = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DomainRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DomainRepository.cs index 9aa28fb18a..b49f3bf204 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DomainRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DomainRepository.cs @@ -34,10 +34,10 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override IEnumerable PerformGetAll(params int[] ids) { - var sql = GetBaseQuery(false).Where("umbracoDomain.id > 0"); + var sql = GetBaseQuery(false).Where(x => x.Id > 0); if (ids.Any()) { - sql.Where("umbracoDomain.id in (@ids)", new { ids = ids }); + sql.WhereIn(x => x.Id, ids); } return Database.Fetch(sql).Select(ConvertFromDto); @@ -68,7 +68,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoDomain.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Domain}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ExternalLoginRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ExternalLoginRepository.cs index ad53a2d522..55be1d7ba8 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/ExternalLoginRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ExternalLoginRepository.cs @@ -160,7 +160,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoExternalLogin.id = @id"; + return $"{Constants.DatabaseSchema.Tables.ExternalLogin}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs index a905294417..bd953b8d15 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs @@ -41,15 +41,15 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override IEnumerable PerformGetAll(params int[] ids) { - var sql = GetBaseQuery(false).Where("umbracoLanguage.id > 0"); + var sql = GetBaseQuery(false).Where(x => x.Id > 0); if (ids.Any()) { - sql.Where("umbracoLanguage.id in (@ids)", new { ids = ids }); + sql.WhereIn(x => x.Id, ids); } //this needs to be sorted since that is the way legacy worked - default language is the first one!! //even though legacy didn't sort, it should be by id - sql.OrderBy(dto => dto.Id); + sql.OrderBy(x => x.Id); // get languages var languages = Database.Fetch(sql).Select(ConvertFromDto).OrderBy(x => x.Id).ToList(); @@ -90,14 +90,14 @@ namespace Umbraco.Core.Persistence.Repositories.Implement ? sql.SelectCount() : sql.Select(); - sql - .From(); + sql.From(); + return sql; } protected override string GetBaseWhereClause() { - return "umbracoLanguage.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Language}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MacroRepository.cs index 1f0b45614b..154801769c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MacroRepository.cs @@ -28,7 +28,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public IMacro Get(Guid id) { - var sql = GetBaseQuery().Where("uniqueId=@Id", new { Id = id }); + var sql = GetBaseQuery().Where(x => x.UniqueId == id); return GetBySql(sql); } @@ -115,7 +115,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "cmsMacro.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Macro}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaTypeRepository.cs index 512011b52c..1351141c13 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaTypeRepository.cs @@ -89,7 +89,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() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs index edd6dc0ebb..05186f5841 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberGroupRepository.cs @@ -38,7 +38,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement .Where(dto => dto.NodeObjectType == NodeObjectTypeId); if (ids.Any()) - sql.Where("umbracoNode.id in (@ids)", new { /*ids =*/ ids }); + sql.WhereIn(x => x.NodeId, ids); return Database.Fetch(sql).Select(x => MemberGroupFactory.BuildEntity(x)); } @@ -118,7 +118,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public IMemberGroup Get(Guid uniqueId) { var sql = GetBaseQuery(false); - sql.Where("umbracoNode.uniqueId = @uniqueId", new { uniqueId }); + sql.Where(x => x.UniqueId == uniqueId); var dto = Database.Fetch(SqlSyntax.SelectTop(sql, 1)).FirstOrDefault(); @@ -257,7 +257,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement .InnerJoin() .On(dto => dto.NodeId, dto => dto.MemberGroup) .Where(x => x.NodeObjectType == NodeObjectTypeId) - .Where("cmsMember2MemberGroup.Member in (@ids)", new { ids = memberIds }); + .WhereIn(x => x.Member, memberIds); var currentlyAssigned = Database.Fetch(assignedSql).ToArray(); @@ -271,6 +271,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var found = currentlyAssigned.Where(x => x.MemberId == mId).ToArray(); var assignedRoles = found.Where(x => roleNames.Contains(x.RoleName, StringComparer.CurrentCultureIgnoreCase)).Select(x => x.RoleName); var nonAssignedRoles = roleNames.Except(assignedRoles, StringComparer.CurrentCultureIgnoreCase); + foreach (var toAssign in nonAssignedRoles) { var groupId = rolesForNames.First(x => x.Text.InvariantEquals(toAssign)).NodeId; diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberRepository.cs index 15c707c624..62f41aa727 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberRepository.cs @@ -437,9 +437,11 @@ namespace Umbraco.Core.Persistence.Repositories.Implement foreach (var batch in inGroups) { var memberIdBatch = batch.Select(x => x.Id); + var sql = Sql().SelectAll().From() .Where(dto => dto.MemberGroup == memberGroup.Id) - .Where("Member IN (@memberIds)", new { memberIds = memberIdBatch }); + .WhereIn(dto => dto.Member, memberIdBatch); + var memberIdsInGroup = Database.Fetch(sql) .Select(x => x.Member).ToArray(); diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberTypeRepository.cs index c3b95dbd8f..6475732cc1 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MemberTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MemberTypeRepository.cs @@ -115,7 +115,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() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PublicAccessRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PublicAccessRepository.cs index 1dc7aa478d..4d3267f242 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/PublicAccessRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PublicAccessRepository.cs @@ -36,7 +36,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement if (ids.Any()) { - sql.Where("umbracoAccess.id IN (@ids)", new { ids }); + sql.WhereIn(x => x.Id, ids); } sql.OrderBy(x => x.NodeId); @@ -66,7 +66,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoAccess.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Access}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs index 592e112be1..d02478ac68 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs @@ -111,7 +111,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoRelation.id = @id"; + return $"{Constants.DatabaseSchema.Tables.Relation}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationTypeRepository.cs index 623b55b6f8..66a148d03a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationTypeRepository.cs @@ -109,7 +109,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoRelationType.id = @id"; + return $"{Constants.DatabaseSchema.Tables.RelationType}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs index 2175780916..f26b7fa6ab 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs @@ -116,7 +116,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return Constants.DatabaseSchema.Tables.Node + ".id = @id"; + return $"{Constants.DatabaseSchema.Tables.Node}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs index 0a66e29147..b2391c572d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/UserGroupRepository.cs @@ -271,7 +271,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override string GetBaseWhereClause() { - return "umbracoUserGroup.id = @id"; + return $"{Constants.DatabaseSchema.Tables.UserGroup}.id = @id"; } protected override IEnumerable GetDeleteClauses() diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs index 9bc0bbeb47..50eb2e6d0e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs @@ -420,7 +420,7 @@ ORDER BY colName"; protected override string GetBaseWhereClause() { - return "umbracoUser.id = @id"; + return $"{Constants.DatabaseSchema.Tables.User}.id = @id"; } protected override IEnumerable GetDeleteClauses()