Fix SQL parameters in GetNewChildSortOrder (#8961)

* Fix SQL parameters in GetNewChildSortOrder

* Update SQL template code formatting

* Update sortOrder calculation
This commit is contained in:
Ronald Barendse
2020-12-13 00:28:52 +01:00
committed by GitHub
parent 4d74f57a81
commit 602980a9d6

View File

@@ -890,7 +890,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.EnsureUniqueNodeName, tsql => tsql
.Select<NodeDto>(x => Alias(x.NodeId, "id"), x => Alias(x.Text, "name"))
.From<NodeDto>()
.Where<NodeDto>(x => x.NodeObjectType == SqlTemplate.Arg<Guid>("nodeObjectType") && x.ParentId == SqlTemplate.Arg<int>("parentId")));
.Where<NodeDto>(x => x.NodeObjectType == SqlTemplate.Arg<Guid>("nodeObjectType") && x.ParentId == SqlTemplate.Arg<int>("parentId"))
);
var sql = template.Sql(NodeObjectTypeId, parentId);
var names = Database.Fetch<SimilarNodeName>(sql);
@@ -900,28 +901,43 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected virtual int GetNewChildSortOrder(int parentId, int first)
{
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetSortOrder, tsql =>
tsql.Select($"COALESCE(MAX(sortOrder),{first - 1})").From<NodeDto>().Where<NodeDto>(x => x.ParentId == SqlTemplate.Arg<int>("parentId") && x.NodeObjectType == NodeObjectTypeId)
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetSortOrder, tsql => tsql
.Select("MAX(sortOrder)")
.From<NodeDto>()
.Where<NodeDto>(x => x.NodeObjectType == SqlTemplate.Arg<Guid>("nodeObjectType") && x.ParentId == SqlTemplate.Arg<int>("parentId"))
);
return Database.ExecuteScalar<int>(template.Sql(new { parentId })) + 1;
var sql = template.Sql(NodeObjectTypeId, parentId);
var sortOrder = Database.ExecuteScalar<int?>(sql);
return (sortOrder + 1) ?? first;
}
protected virtual NodeDto GetParentNodeDto(int parentId)
{
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetParentNode, tsql =>
tsql.Select<NodeDto>().From<NodeDto>().Where<NodeDto>(x => x.NodeId == SqlTemplate.Arg<int>("parentId"))
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetParentNode, tsql => tsql
.Select<NodeDto>()
.From<NodeDto>()
.Where<NodeDto>(x => x.NodeId == SqlTemplate.Arg<int>("parentId"))
);
return Database.Fetch<NodeDto>(template.Sql(parentId)).First();
var sql = template.Sql(parentId);
var nodeDto = Database.First<NodeDto>(sql);
return nodeDto;
}
protected virtual int GetReservedId(Guid uniqueId)
{
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetReservedId, tsql =>
tsql.Select<NodeDto>(x => x.NodeId).From<NodeDto>().Where<NodeDto>(x => x.UniqueId == SqlTemplate.Arg<Guid>("uniqueId") && x.NodeObjectType == Constants.ObjectTypes.IdReservation)
var template = SqlContext.Templates.Get(Constants.SqlTemplates.VersionableRepository.GetReservedId, tsql => tsql
.Select<NodeDto>(x => x.NodeId)
.From<NodeDto>()
.Where<NodeDto>(x => x.UniqueId == SqlTemplate.Arg<Guid>("uniqueId") && x.NodeObjectType == Constants.ObjectTypes.IdReservation)
);
var id = Database.ExecuteScalar<int?>(template.Sql(new { uniqueId = uniqueId }));
var sql = template.Sql(new { uniqueId });
var id = Database.ExecuteScalar<int?>(sql);
return id ?? 0;
}