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:
@@ -181,7 +181,7 @@ public abstract class EntityRepositoryBase<TId, TEntity> : RepositoryBase, IRead
|
||||
/// <summary>
|
||||
/// Returns an integer with the count of entities found with the passed in query
|
||||
/// </summary>
|
||||
public int Count(IQuery<TEntity> query)
|
||||
public int Count(IQuery<TEntity>? query)
|
||||
=> PerformCount(query);
|
||||
|
||||
/// <summary>
|
||||
@@ -221,9 +221,14 @@ public abstract class EntityRepositoryBase<TId, TEntity> : RepositoryBase, IRead
|
||||
return count == 1;
|
||||
}
|
||||
|
||||
protected virtual int PerformCount(IQuery<TEntity> query)
|
||||
protected virtual int PerformCount(IQuery<TEntity>? query)
|
||||
{
|
||||
Sql<ISqlContext> sqlClause = GetBaseQuery(true);
|
||||
if (query is null)
|
||||
{
|
||||
return Database.ExecuteScalar<int>(sqlClause);
|
||||
}
|
||||
|
||||
var translator = new SqlTranslator<TEntity>(sqlClause, query);
|
||||
Sql<ISqlContext> sql = translator.Translate();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user