示例#1
0
        public async Task <PagedPostCollection> GetPagedPostsAsync(int page, int postsPerPage)
        {
            IList <PostContent>?postContents;
            var count = 0;

            try
            {
                var queryBuilder = new StrapiQueryBuilder <PostContent>()
                                   .Start(postsPerPage * page)
                                   .Limit(postsPerPage)
                                   .OrderByDescending(m => m.PublishedAt);
                postContents = await _client.GetAsync(queryBuilder);

                count = await _client.CountAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to fetch from Strapi");
                postContents = null;
            }

            if (postContents == null)
            {
                return(PagedPostCollection.Empty(postsPerPage));
            }

            return(new PagedPostCollection
            {
                Posts = postContents.Select(m => m.ToBlogPost(_baseUrl)).ToList().AsReadOnly(),
                CurrentPage = page,
                TotalPosts = count,
                PostsPerPage = postsPerPage
            });
        }