code: func (c *WorkItemCommentsController) List(ctx *app.ListWorkItemCommentsContext) error {
  	offset, limit := computePagingLimits(ctx.PageOffset, ctx.PageLimit)
  	err := application.Transactional(c.db, func(appl application.Application) error {
  		err := appl.WorkItems().CheckExists(ctx, ctx.WiID)
  		if err != nil {
  			return goa.ErrNotFound(err.Error())
  		}
  		comments, tc, err := appl.Comments().List(ctx, ctx.WiID, &offset, &limit)
  		count := int(tc)
  		if err != nil {
  			return goa.ErrInternal(err.Error())
  		}
  		return ctx.ConditionalEntities(comments, c.config.GetCacheControlComments, func() error {
  			res := &app.CommentList{}
  			res.Data = []*app.Comment{}
  			res.Meta = &app.CommentListMeta{TotalCount: count}
  			res.Data = ConvertComments(ctx.Request, comments)
  			res.Links = &app.PagingLinks{}
  			setPagingLinks(res.Links, buildAbsoluteURL(ctx.Request), len(comments), offset, limit, count)
  			return ctx.OK(res)
  		})
  	})
  	if err != nil {
  		return jsonapi.JSONErrorResponse(ctx, err)
  	}
  	return nil
  }
docs: // List runs the list action.