Add SyncTags to uploader interface (#9326)
* Add sync tags to interface Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix revive Signed-off-by: jolheiser <john.olheiser@gmail.com>
This commit is contained in:
parent
3bf5a07537
commit
382936a668
|
@ -11,7 +11,8 @@ type Uploader interface {
|
||||||
CreateRepo(repo *Repository, opts MigrateOptions) error
|
CreateRepo(repo *Repository, opts MigrateOptions) error
|
||||||
CreateTopics(topic ...string) error
|
CreateTopics(topic ...string) error
|
||||||
CreateMilestones(milestones ...*Milestone) error
|
CreateMilestones(milestones ...*Milestone) error
|
||||||
CreateReleases(syncTags bool, releases ...*Release) error
|
CreateReleases(releases ...*Release) error
|
||||||
|
SyncTags() error
|
||||||
CreateLabels(labels ...*Label) error
|
CreateLabels(labels ...*Label) error
|
||||||
CreateIssues(issues ...*Issue) error
|
CreateIssues(issues ...*Issue) error
|
||||||
CreateComments(comments ...*Comment) error
|
CreateComments(comments ...*Comment) error
|
||||||
|
|
|
@ -201,7 +201,7 @@ func (g *GiteaLocalUploader) CreateLabels(labels ...*base.Label) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateReleases creates releases
|
// CreateReleases creates releases
|
||||||
func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.Release) error {
|
func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
|
||||||
var rels = make([]*models.Release, 0, len(releases))
|
var rels = make([]*models.Release, 0, len(releases))
|
||||||
for _, release := range releases {
|
for _, release := range releases {
|
||||||
var rel = models.Release{
|
var rel = models.Release{
|
||||||
|
@ -288,18 +288,15 @@ func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.Rel
|
||||||
|
|
||||||
rels = append(rels, &rel)
|
rels = append(rels, &rel)
|
||||||
}
|
}
|
||||||
if err := models.InsertReleases(rels...); err != nil {
|
|
||||||
return err
|
return models.InsertReleases(rels...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if syncTags {
|
// SyncTags syncs releases with tags in the database
|
||||||
// sync tags to releases in database
|
func (g *GiteaLocalUploader) SyncTags() error {
|
||||||
return models.SyncReleasesWithTags(g.repo, g.gitRepo)
|
return models.SyncReleasesWithTags(g.repo, g.gitRepo)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateIssues creates issues
|
// CreateIssues creates issues
|
||||||
func (g *GiteaLocalUploader) CreateIssues(issues ...*base.Issue) error {
|
func (g *GiteaLocalUploader) CreateIssues(issues ...*base.Issue) error {
|
||||||
var iss = make([]*models.Issue, 0, len(issues))
|
var iss = make([]*models.Issue, 0, len(issues))
|
||||||
|
|
|
@ -161,20 +161,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
|
||||||
}
|
}
|
||||||
|
|
||||||
relBatchSize := uploader.MaxBatchInsertSize("release")
|
relBatchSize := uploader.MaxBatchInsertSize("release")
|
||||||
syncTags := false
|
|
||||||
for len(releases) > 0 {
|
for len(releases) > 0 {
|
||||||
if len(releases) <= relBatchSize {
|
|
||||||
if len(releases) < relBatchSize {
|
if len(releases) < relBatchSize {
|
||||||
relBatchSize = len(releases)
|
relBatchSize = len(releases)
|
||||||
}
|
}
|
||||||
syncTags = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := uploader.CreateReleases(syncTags, releases[:relBatchSize]...); err != nil {
|
if err := uploader.CreateReleases(releases[:relBatchSize]...); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
releases = releases[relBatchSize:]
|
releases = releases[relBatchSize:]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Once all releases (if any) are inserted, sync any remaining non-release tags
|
||||||
|
if err := uploader.SyncTags(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var commentBatchSize = uploader.MaxBatchInsertSize("comment")
|
var commentBatchSize = uploader.MaxBatchInsertSize("comment")
|
||||||
|
|
Loading…
Reference in a new issue