V14/feature/management tree count by take zero (#15308)
* Allow Tree endpoints that query entities to return count without entity data * Apply count by take 0 in FileSystem Endpoints * Apply count by take 0 in Dictionary Endpoints * Apply count by take 0 in RootRelationType Endpoints * Revert PaginationService takeZero flag as it only guards against things that already blow up * Mark PagedResult as Obsolete as we want to step away from classic pagination system to skip/take * Pushed management api RelationType pagination and async preperation down to the service layer * Scope fix and allocation optimizations * Pushed management api dictionary pagination and down to the service layer Also did some nice allocation optimizations * PR feedback + related strange count behaviour * Moved count by pagesize logic from EntryController to service * A tiny bit of formatting and comments * Fix bad count filter logic * Added integration tests for creating datatypes in a folder * Added tests for count testing on TreeControllers - ChildrenDataType - RootDataType - ChildrenDictionary - RootDictionary - ChildrenDocument - RootDocument - RootBluePrint - RootDocumentType - ChildrenDocumentType * Revert "Added tests for count testing on TreeControllers", should be on services This reverts commit ee2501fe620a584bba13ecd4fdce8142133fd82b. This reverts commit 808d5b276fad267a645e474ead3278d4bb79d0c4. --------- Co-authored-by: Sven Geusens <sge@umbraco.dk> Co-authored-by: kjac <kja@umbraco.dk> Co-authored-by: Andreas Zerbst <andr317c@live.dk>
This commit is contained in:
@@ -30,6 +30,30 @@ internal class EntityRepository : RepositoryBase, IEntityRepositoryExtended
|
||||
|
||||
#region Repository
|
||||
|
||||
public int CountByQuery(IQuery<IUmbracoEntity> query, Guid objectType, IQuery<IUmbracoEntity>? filter)
|
||||
{
|
||||
Sql<ISqlContext> sql = Sql();
|
||||
sql.SelectCount();
|
||||
sql
|
||||
.From<NodeDto>();
|
||||
sql.WhereIn<NodeDto>(x => x.NodeObjectType, new[] { objectType } );
|
||||
|
||||
foreach (Tuple<string, object[]> queryClause in query.GetWhereClauses())
|
||||
{
|
||||
sql.Where(queryClause.Item1, queryClause.Item2);
|
||||
}
|
||||
|
||||
if (filter is not null)
|
||||
{
|
||||
foreach (Tuple<string, object[]> filterClause in filter.GetWhereClauses())
|
||||
{
|
||||
sql.Where(filterClause.Item1, filterClause.Item2);
|
||||
}
|
||||
}
|
||||
|
||||
return Database.ExecuteScalar<int>(sql);
|
||||
}
|
||||
|
||||
public IEnumerable<IEntitySlim> GetPagedResultsByQuery(IQuery<IUmbracoEntity> query, Guid objectType,
|
||||
long pageIndex, int pageSize, out long totalRecords,
|
||||
IQuery<IUmbracoEntity>? filter, Ordering? ordering) =>
|
||||
|
||||
Reference in New Issue
Block a user