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)); }
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)); }