refactor: decouple context from migration structs (#33399)
Use context as much as possible. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
466cc725bc
commit
1ec8d80fa3
23 changed files with 455 additions and 509 deletions
|
@ -12,18 +12,17 @@ import (
|
|||
|
||||
// Downloader downloads the site repo information
|
||||
type Downloader interface {
|
||||
SetContext(context.Context)
|
||||
GetRepoInfo() (*Repository, error)
|
||||
GetTopics() ([]string, error)
|
||||
GetMilestones() ([]*Milestone, error)
|
||||
GetReleases() ([]*Release, error)
|
||||
GetLabels() ([]*Label, error)
|
||||
GetIssues(page, perPage int) ([]*Issue, bool, error)
|
||||
GetComments(commentable Commentable) ([]*Comment, bool, error)
|
||||
GetAllComments(page, perPage int) ([]*Comment, bool, error)
|
||||
GetRepoInfo(ctx context.Context) (*Repository, error)
|
||||
GetTopics(ctx context.Context) ([]string, error)
|
||||
GetMilestones(ctx context.Context) ([]*Milestone, error)
|
||||
GetReleases(ctx context.Context) ([]*Release, error)
|
||||
GetLabels(ctx context.Context) ([]*Label, error)
|
||||
GetIssues(ctx context.Context, page, perPage int) ([]*Issue, bool, error)
|
||||
GetComments(ctx context.Context, commentable Commentable) ([]*Comment, bool, error)
|
||||
GetAllComments(ctx context.Context, page, perPage int) ([]*Comment, bool, error)
|
||||
SupportGetRepoComments() bool
|
||||
GetPullRequests(page, perPage int) ([]*PullRequest, bool, error)
|
||||
GetReviews(reviewable Reviewable) ([]*Review, error)
|
||||
GetPullRequests(ctx context.Context, page, perPage int) ([]*PullRequest, bool, error)
|
||||
GetReviews(ctx context.Context, reviewable Reviewable) ([]*Review, error)
|
||||
FormatCloneURL(opts MigrateOptions, remoteAddr string) (string, error)
|
||||
}
|
||||
|
||||
|
|
|
@ -13,56 +13,53 @@ type NullDownloader struct{}
|
|||
|
||||
var _ Downloader = &NullDownloader{}
|
||||
|
||||
// SetContext set context
|
||||
func (n NullDownloader) SetContext(_ context.Context) {}
|
||||
|
||||
// GetRepoInfo returns a repository information
|
||||
func (n NullDownloader) GetRepoInfo() (*Repository, error) {
|
||||
func (n NullDownloader) GetRepoInfo(_ context.Context) (*Repository, error) {
|
||||
return nil, ErrNotSupported{Entity: "RepoInfo"}
|
||||
}
|
||||
|
||||
// GetTopics return repository topics
|
||||
func (n NullDownloader) GetTopics() ([]string, error) {
|
||||
func (n NullDownloader) GetTopics(_ context.Context) ([]string, error) {
|
||||
return nil, ErrNotSupported{Entity: "Topics"}
|
||||
}
|
||||
|
||||
// GetMilestones returns milestones
|
||||
func (n NullDownloader) GetMilestones() ([]*Milestone, error) {
|
||||
func (n NullDownloader) GetMilestones(_ context.Context) ([]*Milestone, error) {
|
||||
return nil, ErrNotSupported{Entity: "Milestones"}
|
||||
}
|
||||
|
||||
// GetReleases returns releases
|
||||
func (n NullDownloader) GetReleases() ([]*Release, error) {
|
||||
func (n NullDownloader) GetReleases(_ context.Context) ([]*Release, error) {
|
||||
return nil, ErrNotSupported{Entity: "Releases"}
|
||||
}
|
||||
|
||||
// GetLabels returns labels
|
||||
func (n NullDownloader) GetLabels() ([]*Label, error) {
|
||||
func (n NullDownloader) GetLabels(_ context.Context) ([]*Label, error) {
|
||||
return nil, ErrNotSupported{Entity: "Labels"}
|
||||
}
|
||||
|
||||
// GetIssues returns issues according start and limit
|
||||
func (n NullDownloader) GetIssues(page, perPage int) ([]*Issue, bool, error) {
|
||||
func (n NullDownloader) GetIssues(_ context.Context, page, perPage int) ([]*Issue, bool, error) {
|
||||
return nil, false, ErrNotSupported{Entity: "Issues"}
|
||||
}
|
||||
|
||||
// GetComments returns comments of an issue or PR
|
||||
func (n NullDownloader) GetComments(commentable Commentable) ([]*Comment, bool, error) {
|
||||
func (n NullDownloader) GetComments(_ context.Context, commentable Commentable) ([]*Comment, bool, error) {
|
||||
return nil, false, ErrNotSupported{Entity: "Comments"}
|
||||
}
|
||||
|
||||
// GetAllComments returns paginated comments
|
||||
func (n NullDownloader) GetAllComments(page, perPage int) ([]*Comment, bool, error) {
|
||||
func (n NullDownloader) GetAllComments(_ context.Context, page, perPage int) ([]*Comment, bool, error) {
|
||||
return nil, false, ErrNotSupported{Entity: "AllComments"}
|
||||
}
|
||||
|
||||
// GetPullRequests returns pull requests according page and perPage
|
||||
func (n NullDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bool, error) {
|
||||
func (n NullDownloader) GetPullRequests(_ context.Context, page, perPage int) ([]*PullRequest, bool, error) {
|
||||
return nil, false, ErrNotSupported{Entity: "PullRequests"}
|
||||
}
|
||||
|
||||
// GetReviews returns pull requests review
|
||||
func (n NullDownloader) GetReviews(reviewable Reviewable) ([]*Review, error) {
|
||||
func (n NullDownloader) GetReviews(_ context.Context, reviewable Reviewable) ([]*Review, error) {
|
||||
return nil, ErrNotSupported{Entity: "Reviews"}
|
||||
}
|
||||
|
||||
|
|
|
@ -49,21 +49,15 @@ func (d *RetryDownloader) retry(work func() error) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// SetContext set context
|
||||
func (d *RetryDownloader) SetContext(ctx context.Context) {
|
||||
d.ctx = ctx
|
||||
d.Downloader.SetContext(ctx)
|
||||
}
|
||||
|
||||
// GetRepoInfo returns a repository information with retry
|
||||
func (d *RetryDownloader) GetRepoInfo() (*Repository, error) {
|
||||
func (d *RetryDownloader) GetRepoInfo(ctx context.Context) (*Repository, error) {
|
||||
var (
|
||||
repo *Repository
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
repo, err = d.Downloader.GetRepoInfo()
|
||||
repo, err = d.Downloader.GetRepoInfo(ctx)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -71,14 +65,14 @@ func (d *RetryDownloader) GetRepoInfo() (*Repository, error) {
|
|||
}
|
||||
|
||||
// GetTopics returns a repository's topics with retry
|
||||
func (d *RetryDownloader) GetTopics() ([]string, error) {
|
||||
func (d *RetryDownloader) GetTopics(ctx context.Context) ([]string, error) {
|
||||
var (
|
||||
topics []string
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
topics, err = d.Downloader.GetTopics()
|
||||
topics, err = d.Downloader.GetTopics(ctx)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -86,14 +80,14 @@ func (d *RetryDownloader) GetTopics() ([]string, error) {
|
|||
}
|
||||
|
||||
// GetMilestones returns a repository's milestones with retry
|
||||
func (d *RetryDownloader) GetMilestones() ([]*Milestone, error) {
|
||||
func (d *RetryDownloader) GetMilestones(ctx context.Context) ([]*Milestone, error) {
|
||||
var (
|
||||
milestones []*Milestone
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
milestones, err = d.Downloader.GetMilestones()
|
||||
milestones, err = d.Downloader.GetMilestones(ctx)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -101,14 +95,14 @@ func (d *RetryDownloader) GetMilestones() ([]*Milestone, error) {
|
|||
}
|
||||
|
||||
// GetReleases returns a repository's releases with retry
|
||||
func (d *RetryDownloader) GetReleases() ([]*Release, error) {
|
||||
func (d *RetryDownloader) GetReleases(ctx context.Context) ([]*Release, error) {
|
||||
var (
|
||||
releases []*Release
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
releases, err = d.Downloader.GetReleases()
|
||||
releases, err = d.Downloader.GetReleases(ctx)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -116,14 +110,14 @@ func (d *RetryDownloader) GetReleases() ([]*Release, error) {
|
|||
}
|
||||
|
||||
// GetLabels returns a repository's labels with retry
|
||||
func (d *RetryDownloader) GetLabels() ([]*Label, error) {
|
||||
func (d *RetryDownloader) GetLabels(ctx context.Context) ([]*Label, error) {
|
||||
var (
|
||||
labels []*Label
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
labels, err = d.Downloader.GetLabels()
|
||||
labels, err = d.Downloader.GetLabels(ctx)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -131,7 +125,7 @@ func (d *RetryDownloader) GetLabels() ([]*Label, error) {
|
|||
}
|
||||
|
||||
// GetIssues returns a repository's issues with retry
|
||||
func (d *RetryDownloader) GetIssues(page, perPage int) ([]*Issue, bool, error) {
|
||||
func (d *RetryDownloader) GetIssues(ctx context.Context, page, perPage int) ([]*Issue, bool, error) {
|
||||
var (
|
||||
issues []*Issue
|
||||
isEnd bool
|
||||
|
@ -139,7 +133,7 @@ func (d *RetryDownloader) GetIssues(page, perPage int) ([]*Issue, bool, error) {
|
|||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
issues, isEnd, err = d.Downloader.GetIssues(page, perPage)
|
||||
issues, isEnd, err = d.Downloader.GetIssues(ctx, page, perPage)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -147,7 +141,7 @@ func (d *RetryDownloader) GetIssues(page, perPage int) ([]*Issue, bool, error) {
|
|||
}
|
||||
|
||||
// GetComments returns a repository's comments with retry
|
||||
func (d *RetryDownloader) GetComments(commentable Commentable) ([]*Comment, bool, error) {
|
||||
func (d *RetryDownloader) GetComments(ctx context.Context, commentable Commentable) ([]*Comment, bool, error) {
|
||||
var (
|
||||
comments []*Comment
|
||||
isEnd bool
|
||||
|
@ -155,7 +149,7 @@ func (d *RetryDownloader) GetComments(commentable Commentable) ([]*Comment, bool
|
|||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
comments, isEnd, err = d.Downloader.GetComments(commentable)
|
||||
comments, isEnd, err = d.Downloader.GetComments(ctx, commentable)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -163,7 +157,7 @@ func (d *RetryDownloader) GetComments(commentable Commentable) ([]*Comment, bool
|
|||
}
|
||||
|
||||
// GetPullRequests returns a repository's pull requests with retry
|
||||
func (d *RetryDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bool, error) {
|
||||
func (d *RetryDownloader) GetPullRequests(ctx context.Context, page, perPage int) ([]*PullRequest, bool, error) {
|
||||
var (
|
||||
prs []*PullRequest
|
||||
err error
|
||||
|
@ -171,7 +165,7 @@ func (d *RetryDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bo
|
|||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
prs, isEnd, err = d.Downloader.GetPullRequests(page, perPage)
|
||||
prs, isEnd, err = d.Downloader.GetPullRequests(ctx, page, perPage)
|
||||
return err
|
||||
})
|
||||
|
||||
|
@ -179,14 +173,13 @@ func (d *RetryDownloader) GetPullRequests(page, perPage int) ([]*PullRequest, bo
|
|||
}
|
||||
|
||||
// GetReviews returns pull requests reviews
|
||||
func (d *RetryDownloader) GetReviews(reviewable Reviewable) ([]*Review, error) {
|
||||
func (d *RetryDownloader) GetReviews(ctx context.Context, reviewable Reviewable) ([]*Review, error) {
|
||||
var (
|
||||
reviews []*Review
|
||||
err error
|
||||
)
|
||||
|
||||
err = d.retry(func() error {
|
||||
reviews, err = d.Downloader.GetReviews(reviewable)
|
||||
reviews, err = d.Downloader.GetReviews(ctx, reviewable)
|
||||
return err
|
||||
})
|
||||
|
||||
|
|
|
@ -4,20 +4,22 @@
|
|||
|
||||
package migration
|
||||
|
||||
import "context"
|
||||
|
||||
// Uploader uploads all the information of one repository
|
||||
type Uploader interface {
|
||||
MaxBatchInsertSize(tp string) int
|
||||
CreateRepo(repo *Repository, opts MigrateOptions) error
|
||||
CreateTopics(topic ...string) error
|
||||
CreateMilestones(milestones ...*Milestone) error
|
||||
CreateReleases(releases ...*Release) error
|
||||
SyncTags() error
|
||||
CreateLabels(labels ...*Label) error
|
||||
CreateIssues(issues ...*Issue) error
|
||||
CreateComments(comments ...*Comment) error
|
||||
CreatePullRequests(prs ...*PullRequest) error
|
||||
CreateReviews(reviews ...*Review) error
|
||||
CreateRepo(ctx context.Context, repo *Repository, opts MigrateOptions) error
|
||||
CreateTopics(ctx context.Context, topic ...string) error
|
||||
CreateMilestones(ctx context.Context, milestones ...*Milestone) error
|
||||
CreateReleases(ctx context.Context, releases ...*Release) error
|
||||
SyncTags(ctx context.Context) error
|
||||
CreateLabels(ctx context.Context, labels ...*Label) error
|
||||
CreateIssues(ctx context.Context, issues ...*Issue) error
|
||||
CreateComments(ctx context.Context, comments ...*Comment) error
|
||||
CreatePullRequests(ctx context.Context, prs ...*PullRequest) error
|
||||
CreateReviews(ctx context.Context, reviews ...*Review) error
|
||||
Rollback() error
|
||||
Finish() error
|
||||
Finish(ctx context.Context) error
|
||||
Close()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue