private async Task<IEnumerable<T>> Results<T>(QueryDefinition queryDefinition, QueryRequestOptions queryRequestOptions = null, int? maxItemCount = null)
        {
            List<T> results = new List<T>();
            using FeedIterator feedIterator = RepositoryContainer.GetItemQueryStreamIterator(queryDefinition, requestOptions: queryRequestOptions);
            while (feedIterator.HasMoreResults)
            {
                foreach(T document in await CosmosDbFeedIterator.GetDocuments<T>(feedIterator))
                {
                    results.Add(document);

                    if (results.Count == maxItemCount)
                    {
                        return results;
                    }
                }
            }

            return results;
        }
        private async Task<IEnumerable<T>> Results<T>(QueryDefinition queryDefinition, QueryRequestOptions queryRequestOptions, Func<List<T>, Task> batchAction, int itemsPerPage)
        {
            List<T> results = new List<T>();
            using FeedIterator feedIterator = RepositoryContainer.GetItemQueryStreamIterator(queryDefinition, requestOptions: queryRequestOptions);
            
            while (feedIterator.HasMoreResults)
            {
                results.AddRange(await CosmosDbFeedIterator.GetDocuments<T>(feedIterator));

                if (results.Count() >= itemsPerPage)
                {
                    await batchAction(results);
                    results.Clear();
                }
            }

            if (results.Any())
            {
                await batchAction(results);
                results.Clear();
            }

            return results;
        }