From 312bc58c540902901ca9ad7238b4cf85eefb9d24 Mon Sep 17 00:00:00 2001 From: Amine Date: Wed, 2 Oct 2019 15:39:24 +0200 Subject: [PATCH] bridge/gitlab: iterator now query all label events when NextLabelEvent() i called, and sort them by ID --- bridge/gitlab/iterator.go | 55 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/bridge/gitlab/iterator.go b/bridge/gitlab/iterator.go index d5425cee74050f835d42a832b16bb540afa4b220..aef68faa12efabe9afa0cd9f3fc08eb29d7a866a 100644 --- a/bridge/gitlab/iterator.go +++ b/bridge/gitlab/iterator.go @@ -224,40 +224,39 @@ func (i *iterator) NoteValue() *gitlab.Note { return i.note.cache[i.note.index] } -func (i *iterator) getNextLabelEvents() bool { +func (i *iterator) getLabelEvents() bool { ctx, cancel := context.WithTimeout(i.ctx, defaultTimeout) defer cancel() - labelEvents, _, err := i.gc.ResourceLabelEvents.ListIssueLabelEvents( - i.project, - i.IssueValue().IID, - &gitlab.ListLabelEventsOptions{ - ListOptions: gitlab.ListOptions{ - Page: i.labelEvent.page, - PerPage: i.capacity, + hasNextPage := true + for hasNextPage { + labelEvents, _, err := i.gc.ResourceLabelEvents.ListIssueLabelEvents( + i.project, + i.IssueValue().IID, + &gitlab.ListLabelEventsOptions{ + ListOptions: gitlab.ListOptions{ + Page: i.labelEvent.page, + PerPage: i.capacity, + }, }, - }, - gitlab.WithContext(ctx), - ) - - if err != nil { - i.err = err - return false - } - - if len(labelEvents) == 0 { - i.labelEvent.page = 1 - i.labelEvent.index = -1 - i.labelEvent.cache = nil - return false + gitlab.WithContext(ctx), + ) + if err != nil { + i.err = err + return false + } + + i.labelEvent.page++ + hasNextPage = len(labelEvents) != 0 + i.labelEvent.cache = append(i.labelEvent.cache, labelEvents...) } - i.labelEvent.cache = labelEvents - i.labelEvent.page++ + i.labelEvent.page = 1 i.labelEvent.index = 0 - sort.Sort(i.labelEvent) - return true + + // if the label events list is empty return false + return len(i.labelEvent.cache) != 0 } // because Gitlab @@ -271,7 +270,7 @@ func (i *iterator) NextLabelEvent() bool { } if len(i.labelEvent.cache) == 0 { - return i.getNextLabelEvents() + return i.getLabelEvents() } // move cursor index @@ -280,7 +279,7 @@ func (i *iterator) NextLabelEvent() bool { return true } - return i.getNextLabelEvents() + return false } func (i *iterator) LabelEventValue() *gitlab.LabelEvent {