コード例 #1
0
 public static Paginated <TItem, TId> Empty <TItem, TId>(PaginationRequest <TId> request)
 {
     return(new Paginated <TItem, TId>
     {
         Pagination = new Pagination <TId>
         {
             Order = request.Order,
             Cursor = request.Cursor
         },
         Items = ArraySegment <TItem> .Empty
     });
 }
コード例 #2
0
 public static Paginated <TItem, TId> Paginate <TItem, TId>(this IReadOnlyCollection <TItem> source,
                                                            PaginationRequest <TId> request,
                                                            IUrlHelper url,
                                                            Func <TItem, TId> idProjection)
 {
     return(new Paginated <TItem, TId>
     {
         Items = source,
         Pagination = MapPaginationModel(request,
                                         url,
                                         source,
                                         idProjection)
     });
 }
コード例 #3
0
        private static Pagination <TId> MapPaginationModel <TId, TItem>(PaginationRequest <TId> request,
                                                                        IUrlHelper url,
                                                                        IReadOnlyCollection <TItem> items,
                                                                        Func <TItem, TId> idProjection)
        {
            var result = new Pagination <TId>
            {
                Count  = items.Count,
                Order  = request.Order,
                Cursor = request.Cursor,
            };

            if (items.Any() && items.Count == request.Limit)
            {
                request.Cursor = idProjection(items.Last());
                result.NextUrl = BuildUrl(url, request);
            }

            return(result);
        }