Fixes SetAllFastSorted and sort orders
This commit is contained in:
@@ -609,22 +609,21 @@ namespace Umbraco.Web.PublishedCache.NuCache
|
||||
// NextSiblingContentId
|
||||
|
||||
ContentNode prev = null;
|
||||
var currLevel = 0;
|
||||
ContentNode currParent = null;
|
||||
|
||||
foreach (var kit in kits)
|
||||
{
|
||||
if (currLevel != kit.Node.Level)
|
||||
{
|
||||
prev = null; //reset since we're on a new level
|
||||
currLevel = kit.Node.Level;
|
||||
}
|
||||
|
||||
if (!BuildKit(kit, out var parentLink))
|
||||
{
|
||||
ok = false;
|
||||
continue; // skip that one
|
||||
}
|
||||
|
||||
if (currParent != null && currParent.Id != parentLink.Value.Id)
|
||||
prev = null; //changed parent
|
||||
|
||||
currParent = parentLink.Value;
|
||||
|
||||
_logger.Debug<ContentStore>($"Set {kit.Node.Id} with parent {kit.Node.ParentContentId}");
|
||||
SetValueLocked(_contentNodes, kit.Node.Id, kit.Node);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
{
|
||||
var sql = ContentSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Document && x.NodeId == id && !x.Trashed)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
var dto = scope.Database.Fetch<ContentSourceDto>(sql).FirstOrDefault();
|
||||
return dto == null ? new ContentNodeKit() : CreateContentNodeKit(dto);
|
||||
@@ -77,7 +77,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
{
|
||||
var sql = ContentSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Document && !x.Trashed)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateContentNodeKit);
|
||||
}
|
||||
@@ -91,7 +91,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Document && !x.Trashed)
|
||||
.Where<NodeDto>(x => x.NodeId == id, "x")
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateContentNodeKit);
|
||||
}
|
||||
@@ -103,7 +103,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
var sql = ContentSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Document && !x.Trashed)
|
||||
.WhereIn<ContentDto>(x => x.ContentTypeId, ids)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateContentNodeKit);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
{
|
||||
var sql = MediaSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Media && x.NodeId == id && !x.Trashed)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
var dto = scope.Database.Fetch<ContentSourceDto>(sql).FirstOrDefault();
|
||||
return dto == null ? new ContentNodeKit() : CreateMediaNodeKit(dto);
|
||||
@@ -150,7 +150,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
{
|
||||
var sql = MediaSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Media && !x.Trashed)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateMediaNodeKit);
|
||||
}
|
||||
@@ -164,7 +164,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Media && !x.Trashed)
|
||||
.Where<NodeDto>(x => x.NodeId == id, "x")
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateMediaNodeKit);
|
||||
}
|
||||
@@ -176,7 +176,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
var sql = MediaSourcesSelect(scope)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == Constants.ObjectTypes.Media && !x.Trashed)
|
||||
.WhereIn<ContentDto>(x => x.ContentTypeId, ids)
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.SortOrder);
|
||||
.OrderBy<NodeDto>(x => x.Level, x => x.ParentId, x => x.SortOrder);
|
||||
|
||||
return scope.Database.Query<ContentSourceDto>(sql).Select(CreateMediaNodeKit);
|
||||
}
|
||||
|
||||
@@ -8,14 +8,70 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
|
||||
/// </summary>
|
||||
internal interface IDataSource
|
||||
{
|
||||
//TODO: For these required sort orders, would sorting on Path 'just work'?
|
||||
|
||||
ContentNodeKit GetContentSource(IScope scope, int id);
|
||||
IEnumerable<ContentNodeKit> GetAllContentSources(IScope scope); // must order by level, sortOrder
|
||||
IEnumerable<ContentNodeKit> GetBranchContentSources(IScope scope, int id); // must order by level, sortOrder
|
||||
|
||||
/// <summary>
|
||||
/// Returns all content ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetAllContentSources(IScope scope);
|
||||
|
||||
/// <summary>
|
||||
/// Returns branch for content ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetBranchContentSources(IScope scope, int id);
|
||||
|
||||
/// <summary>
|
||||
/// Returns content by Ids ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetTypeContentSources(IScope scope, IEnumerable<int> ids);
|
||||
|
||||
ContentNodeKit GetMediaSource(IScope scope, int id);
|
||||
IEnumerable<ContentNodeKit> GetAllMediaSources(IScope scope); // must order by level, sortOrder
|
||||
|
||||
/// <summary>
|
||||
/// Returns all media ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetAllMediaSources(IScope scope);
|
||||
|
||||
/// <summary>
|
||||
/// Returns branch for media ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetBranchMediaSources(IScope scope, int id); // must order by level, sortOrder
|
||||
|
||||
/// <summary>
|
||||
/// Returns media by Ids ordered by level + sortOrder
|
||||
/// </summary>
|
||||
/// <param name="scope"></param>
|
||||
/// <returns></returns>
|
||||
/// <remarks>
|
||||
/// MUST be ordered by level + parentId + sortOrder!
|
||||
/// </remarks>
|
||||
IEnumerable<ContentNodeKit> GetTypeMediaSources(IScope scope, IEnumerable<int> ids);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -349,7 +349,7 @@ namespace Umbraco.Web.PublishedCache.NuCache
|
||||
|
||||
_localContentDb?.Clear();
|
||||
|
||||
// IMPORTANT GetAllContentSources sorts kits by level + sortOrder
|
||||
// IMPORTANT GetAllContentSources sorts kits by level + parentId + sortOrder
|
||||
var kits = _dataSource.GetAllContentSources(scope);
|
||||
return _contentStore.SetAllFastSorted(kits);
|
||||
}
|
||||
@@ -368,7 +368,8 @@ namespace Umbraco.Web.PublishedCache.NuCache
|
||||
|
||||
var kits = _localContentDb.Select(x => x.Value)
|
||||
.OrderBy(x => x.Node.Level)
|
||||
.ThenBy(x => x.Node.SortOrder); // IMPORTANT sort by level + sortOrder
|
||||
.ThenBy(x => x.Node.ParentContentId)
|
||||
.ThenBy(x => x.Node.SortOrder); // IMPORTANT sort by level + parentId + sortOrder
|
||||
return _contentStore.SetAllFastSorted(kits);
|
||||
}
|
||||
}
|
||||
@@ -424,7 +425,7 @@ namespace Umbraco.Web.PublishedCache.NuCache
|
||||
_localMediaDb?.Clear();
|
||||
|
||||
_logger.Debug<PublishedSnapshotService>("Loading media from database...");
|
||||
// IMPORTANT GetAllMediaSources sorts kits by level + sortOrder
|
||||
// IMPORTANT GetAllMediaSources sorts kits by level + parentId + sortOrder
|
||||
var kits = _dataSource.GetAllMediaSources(scope);
|
||||
return _mediaStore.SetAllFastSorted(kits);
|
||||
}
|
||||
@@ -443,7 +444,8 @@ namespace Umbraco.Web.PublishedCache.NuCache
|
||||
|
||||
var kits = _localMediaDb.Select(x => x.Value)
|
||||
.OrderBy(x => x.Node.Level)
|
||||
.ThenBy(x => x.Node.SortOrder); // IMPORTANT sort by level + order;
|
||||
.ThenBy(x => x.Node.ParentContentId)
|
||||
.ThenBy(x => x.Node.SortOrder); // IMPORTANT sort by level + parentId + sortOrder
|
||||
return _mediaStore.SetAllFastSorted(kits);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user