-
-
Notifications
You must be signed in to change notification settings - Fork 387
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add pagination to GET /api/v1/find endpoint #1699
base: master
Are you sure you want to change the base?
Conversation
Pull Request Test Coverage Report for Build 7512258238
💛 - Coveralls |
33b4f77
to
09ee26d
Compare
f7f18c8
to
d099924
Compare
d099924
to
4bbb980
Compare
4bbb980
to
162a2da
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
few minor things. I have not checked the tree part of this, and asked for some tests to make sure everyting is working as designed.
if offsetID != "" { | ||
for i, comment := range c { | ||
if comment.ID == offsetID { | ||
c = c[i+1:] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is confusing and even scary a bit. Generally, the idea of changing the slice we are ranging over inside the loop feels wrong to me. Probably it is safe to do now, as we are breaking right away, but someday, as we add code to this function, it may not be the case. I'd rather add a new lcs variable for the result slice.
// | ||
// In case limit is less than the number of replies to first comment after given offset, that first comment is | ||
// returned completely with all replies. | ||
func (t *Tree) limit(limit int, offsetID string) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest calling it setLimit or updateWithLimit, as this function modifies nodes and does not return anything.
@@ -145,3 +159,81 @@ func (t *Tree) sortNodes(sortType string) { | |||
} | |||
}) | |||
} | |||
|
|||
// limit limits number of comments in tree and sets countLeft and lastLimitedComment, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there is no direct test for this non-trivial function, but rather only via MakeTree? It's up to you, but I will feel better if we have some.
`format=tree` pagination provides top-level comments with all replies and returns the last top-level comment as `last_comment` to be used as `offset` for the next page. If comments and replies overflow the limit, the one stepping out of the limit will not be returned. If the first comment and its replies after the given offset overflow the limit, it will be returned with all the replies. `format=plain` pagination works by providing all comments and returning the last comment as `last_comment` to be used as `offset` for the next page.
162a2da
to
82a0888
Compare
Pull Request Test Coverage Report for Build 12265398108Details
💛 - Coveralls |
format=tree
pagination provides top-level comments with all replies and returns the last top-level comment aslast_comment
to be used asoffset
for the next page. If comments and replies overflow the limit, the one stepping out of the limit will not be returned. If the first comment and its replies after the given offset overflow the limit, it will be returned with all the replies.format=plain
pagination works by providing all comments and returning the last comment aslast_comment
to be used asoffset
for the next page.Requires #1685 to be merged first. Backend part for #782.