public Task <PagedCollection <Post> > Execute(PagedCollectionParameters parameters)
        {
            var collectionFactory = new PagedCollectionFactory <Post>(PlaceholderLink.ToCollection(_endpoint));

            return(collectionFactory.CreateFrom(
                       _context.Posts.ProjectToType <Post>(),
                       parameters.Offset ?? _defaultPagingParameters.Offset.Value,
                       parameters.Limit ?? _defaultPagingParameters.Limit.Value));
        }
示例#2
0
        public void Register(TypeAdapterConfig config)
        {
            config.ForType <DbUser, User>()
            .MapWith(src => new User
            {
                Meta      = PlaceholderLink.ToResource(UsersController.Endpoint, src.Id, "GET", null),
                Posts     = PlaceholderLink.ToCollection(UsersController.Endpoint, "GET", new { id = src.Id, link = PostsController.Endpoint }),
                FirstName = src.FirstName,
                LastName  = src.LastName,
                BirthDate = src.BirthDate
            });

            config.ForType <DbPost, Post>()
            .MapWith(src => new Post
            {
                Meta      = PlaceholderLink.ToResource(PostsController.Endpoint, src.Id, "GET", null),
                User      = PlaceholderLink.ToResource(UsersController.Endpoint, src.UserId, "GET", null),
                CreatedAt = src.CreatedAt,
                Content   = src.Content
            });
        }
        public async Task <PagedCollection <Post> > Execute(string userId, PagedCollectionParameters parameters)
        {
            var meta = PlaceholderLink.ToCollection(_endpoint, values: new { id = userId, link = PostsController.Endpoint });
            var collectionFactory = new PagedCollectionFactory <Post>(meta);

            var user = await _context.Users
                       .Where(x => x.Id == userId)
                       .SingleOrDefaultAsync();

            if (user == null)
            {
                return(null);
            }

            var query = _context.Posts
                        .Where(o => o.UserId == userId)
                        .ProjectToType <Post>(_typeAdapterConfig);

            return(await collectionFactory.CreateFrom(
                       query,
                       parameters.Offset ?? _defaultPagingParameters.Offset.Value,
                       parameters.Limit ?? _defaultPagingParameters.Limit.Value));
        }