Return null if container type is not found (#15974)

This commit is contained in:
Nikolaj Geisle
2024-04-04 09:50:31 +02:00
committed by GitHub
parent be16aa0663
commit b5c6a2088f

View File

@@ -49,7 +49,7 @@ internal class EntityContainerRepository : EntityRepositoryBase<int, EntityConta
.Where(
"text=@name AND level=@level AND nodeObjectType=@umbracoObjectTypeId",
new { name, level, umbracoObjectTypeId = NodeObjectTypeId });
return Database.Fetch<NodeDto>(sql).Select(CreateEntity);
return Database.Fetch<NodeDto>(sql).Select(CreateEntity).WhereNotNull();
}
// never cache
@@ -73,7 +73,7 @@ internal class EntityContainerRepository : EntityRepositoryBase<int, EntityConta
GetBaseQuery(false)
.Where<NodeDto>(x => x.NodeObjectType == NodeObjectTypeId)
.WhereIn<NodeDto>(x => x.NodeId, batch))
.Select(CreateEntity);
.Select(CreateEntity).WhereNotNull();
}
// else
@@ -81,7 +81,7 @@ internal class EntityContainerRepository : EntityRepositoryBase<int, EntityConta
.Where("nodeObjectType=@umbracoObjectTypeId", new { umbracoObjectTypeId = NodeObjectTypeId })
.OrderBy<NodeDto>(x => x.Level);
return Database.Fetch<NodeDto>(sql).Select(CreateEntity);
return Database.Fetch<NodeDto>(sql).Select(CreateEntity).WhereNotNull();
}
protected override IEnumerable<EntityContainer> PerformGetByQuery(IQuery<EntityContainer> query) =>
@@ -103,16 +103,20 @@ internal class EntityContainerRepository : EntityRepositoryBase<int, EntityConta
return sql;
}
private static EntityContainer CreateEntity(NodeDto nodeDto)
private static EntityContainer? CreateEntity(NodeDto nodeDto)
{
if (nodeDto.NodeObjectType.HasValue == false)
{
throw new InvalidOperationException("Node with id " + nodeDto.NodeId + " has no object type.");
}
// throws if node is not a container
Guid containedObjectType = EntityContainer.GetContainedObjectType(nodeDto.NodeObjectType.Value);
if (containedObjectType == Guid.Empty)
{
return null;
}
var entity = new EntityContainer(nodeDto.NodeId, nodeDto.UniqueId,
nodeDto.ParentId, nodeDto.Path, nodeDto.Level, nodeDto.SortOrder,
containedObjectType,