(ctx context.Context, repo *cache.RepoCache, b *cache.BugCache, item *timelineItem)
| 237 | } |
| 238 | |
| 239 | func (gi *githubImporter) ensureTimelineItem(ctx context.Context, repo *cache.RepoCache, b *cache.BugCache, item *timelineItem) error { |
| 240 | |
| 241 | switch item.Typename { |
| 242 | case "IssueComment": |
| 243 | err := gi.ensureComment(ctx, repo, b, &item.IssueComment, nil) |
| 244 | if err != nil { |
| 245 | return fmt.Errorf("timeline comment creation: %v", err) |
| 246 | } |
| 247 | return nil |
| 248 | |
| 249 | case "LabeledEvent": |
| 250 | id := parseId(item.LabeledEvent.Id) |
| 251 | _, err := b.ResolveOperationWithMetadata(metaKeyGithubId, id) |
| 252 | if err == nil { |
| 253 | return nil |
| 254 | } |
| 255 | |
| 256 | if err != cache.ErrNoMatchingOp { |
| 257 | return err |
| 258 | } |
| 259 | author, err := gi.ensurePerson(ctx, repo, item.LabeledEvent.Actor) |
| 260 | if err != nil { |
| 261 | return err |
| 262 | } |
| 263 | op, err := b.ForceChangeLabelsRaw( |
| 264 | author, |
| 265 | item.LabeledEvent.CreatedAt.Unix(), |
| 266 | []string{ |
| 267 | text.CleanupOneLine(string(item.LabeledEvent.Label.Name)), |
| 268 | }, |
| 269 | nil, |
| 270 | map[string]string{metaKeyGithubId: id}, |
| 271 | ) |
| 272 | if err != nil { |
| 273 | return err |
| 274 | } |
| 275 | |
| 276 | gi.out <- core.NewImportLabelChange(b.Id(), op.Id()) |
| 277 | return nil |
| 278 | |
| 279 | case "UnlabeledEvent": |
| 280 | id := parseId(item.UnlabeledEvent.Id) |
| 281 | _, err := b.ResolveOperationWithMetadata(metaKeyGithubId, id) |
| 282 | if err == nil { |
| 283 | return nil |
| 284 | } |
| 285 | if err != cache.ErrNoMatchingOp { |
| 286 | return err |
| 287 | } |
| 288 | author, err := gi.ensurePerson(ctx, repo, item.UnlabeledEvent.Actor) |
| 289 | if err != nil { |
| 290 | return err |
| 291 | } |
| 292 | |
| 293 | op, err := b.ForceChangeLabelsRaw( |
| 294 | author, |
| 295 | item.UnlabeledEvent.CreatedAt.Unix(), |
| 296 | nil, |
no test coverage detected