Resolve TODO: Enable pagination on GiteaDownloader.GetComments() & update another TODO (#16963)
* Update TODO in migrations * Resolve TODO: enable pagination on GiteaDownloader.GetComments()
This commit is contained in:
parent
a807031a30
commit
cf6d398485
2 changed files with 40 additions and 44 deletions
|
@ -459,49 +459,48 @@ func (g *GiteaDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, err
|
||||||
func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comment, bool, error) {
|
func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comment, bool, error) {
|
||||||
var allComments = make([]*base.Comment, 0, g.maxPerPage)
|
var allComments = make([]*base.Comment, 0, g.maxPerPage)
|
||||||
|
|
||||||
// for i := 1; ; i++ {
|
for i := 1; ; i++ {
|
||||||
// make sure gitea can shutdown gracefully
|
// make sure gitea can shutdown gracefully
|
||||||
select {
|
select {
|
||||||
case <-g.ctx.Done():
|
case <-g.ctx.Done():
|
||||||
return nil, false, nil
|
return nil, false, nil
|
||||||
default:
|
default:
|
||||||
}
|
|
||||||
|
|
||||||
comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{
|
|
||||||
// PageSize: g.maxPerPage,
|
|
||||||
// Page: i,
|
|
||||||
}})
|
|
||||||
if err != nil {
|
|
||||||
return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, comment := range comments {
|
|
||||||
reactions, err := g.getCommentReactions(comment.ID)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)
|
|
||||||
if err2 := models.CreateRepositoryNotice(
|
|
||||||
fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil {
|
|
||||||
log.Error("create repository notice failed: ", err2)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
allComments = append(allComments, &base.Comment{
|
comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{
|
||||||
IssueIndex: opts.Context.LocalID(),
|
PageSize: g.maxPerPage,
|
||||||
PosterID: comment.Poster.ID,
|
Page: i,
|
||||||
PosterName: comment.Poster.UserName,
|
}})
|
||||||
PosterEmail: comment.Poster.Email,
|
if err != nil {
|
||||||
Content: comment.Body,
|
return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err)
|
||||||
Created: comment.Created,
|
}
|
||||||
Updated: comment.Updated,
|
|
||||||
Reactions: reactions,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO enable pagination vor (gitea >= 1.14) when it got implemented
|
for _, comment := range comments {
|
||||||
// if !g.pagination || len(comments) < g.maxPerPage {
|
reactions, err := g.getCommentReactions(comment.ID)
|
||||||
// break
|
if err != nil {
|
||||||
// }
|
log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)
|
||||||
//}
|
if err2 := models.CreateRepositoryNotice(
|
||||||
|
fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil {
|
||||||
|
log.Error("create repository notice failed: ", err2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allComments = append(allComments, &base.Comment{
|
||||||
|
IssueIndex: opts.Context.LocalID(),
|
||||||
|
PosterID: comment.Poster.ID,
|
||||||
|
PosterName: comment.Poster.UserName,
|
||||||
|
PosterEmail: comment.Poster.Email,
|
||||||
|
Content: comment.Body,
|
||||||
|
Created: comment.Created,
|
||||||
|
Updated: comment.Updated,
|
||||||
|
Reactions: reactions,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if !g.pagination || len(comments) < g.maxPerPage {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
return allComments, true, nil
|
return allComments, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -475,10 +475,7 @@ func Init() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// isIPPrivate reports whether ip is a private address, according to
|
// TODO: replace with `ip.IsPrivate()` if min go version is bumped to 1.17
|
||||||
// RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses).
|
|
||||||
// from https://github.com/golang/go/pull/42793
|
|
||||||
// TODO remove if https://github.com/golang/go/issues/29146 got resolved
|
|
||||||
func isIPPrivate(ip net.IP) bool {
|
func isIPPrivate(ip net.IP) bool {
|
||||||
if ip4 := ip.To4(); ip4 != nil {
|
if ip4 := ip.To4(); ip4 != nil {
|
||||||
return ip4[0] == 10 ||
|
return ip4[0] == 10 ||
|
||||||
|
|
Loading…
Reference in a new issue