private Task <IResultList <IAssetFolderEntity> > GetAssetFoldersAsync(DomainId parentId, AssetFolderScope scope)
        {
            if (scope == AssetFolderScope.Path)
            {
                return(Task.FromResult(ResultList.CreateFrom <IAssetFolderEntity>(0)));
            }

            return(assetQuery.QueryAssetFoldersAsync(Context, parentId, HttpContext.RequestAborted));
        }
        public async Task <IActionResult> GetAssetFolders(string app, [FromQuery] DomainId parentId, [FromQuery] AssetFolderScope scope = AssetFolderScope.PathAndItems)
        {
            var(folders, path) = await AsyncHelper.WhenAll(
                GetAssetFoldersAsync(parentId, scope),
                GetAssetPathAsync(parentId, scope));

            var response = Deferred.Response(() =>
            {
                return(AssetFoldersDto.FromAssets(folders, path, Resources));
            });

            Response.Headers[HeaderNames.ETag] = folders.ToEtag();

            return(Ok(response));
        }
        private Task <IReadOnlyList <IAssetFolderEntity> > GetAssetPathAsync(DomainId parentId, AssetFolderScope scope)
        {
            if (scope == AssetFolderScope.Items)
            {
                return(Task.FromResult <IReadOnlyList <IAssetFolderEntity> >(ReadonlyList.Empty <IAssetFolderEntity>()));
            }

            return(assetQuery.FindAssetFolderAsync(Context.App.Id, parentId, HttpContext.RequestAborted));
        }