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
					
				
			
		
					 3 changed files with 16 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -11,7 +11,8 @@ type Uploader interface {
 | 
			
		|||
	CreateRepo(repo *Repository, opts MigrateOptions) error
 | 
			
		||||
	CreateTopics(topic ...string) error
 | 
			
		||||
	CreateMilestones(milestones ...*Milestone) error
 | 
			
		||||
	CreateReleases(syncTags bool, releases ...*Release) error
 | 
			
		||||
	CreateReleases(releases ...*Release) error
 | 
			
		||||
	SyncTags() error
 | 
			
		||||
	CreateLabels(labels ...*Label) error
 | 
			
		||||
	CreateIssues(issues ...*Issue) error
 | 
			
		||||
	CreateComments(comments ...*Comment) error
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -201,7 +201,7 @@ func (g *GiteaLocalUploader) CreateLabels(labels ...*base.Label) error {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// 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))
 | 
			
		||||
	for _, release := range releases {
 | 
			
		||||
		var rel = models.Release{
 | 
			
		||||
| 
						 | 
				
			
			@ -288,16 +288,13 @@ func (g *GiteaLocalUploader) CreateReleases(syncTags bool, releases ...*base.Rel
 | 
			
		|||
 | 
			
		||||
		rels = append(rels, &rel)
 | 
			
		||||
	}
 | 
			
		||||
	if err := models.InsertReleases(rels...); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if syncTags {
 | 
			
		||||
		// sync tags to releases in database
 | 
			
		||||
		return models.SyncReleasesWithTags(g.repo, g.gitRepo)
 | 
			
		||||
	}
 | 
			
		||||
	return models.InsertReleases(rels...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
// SyncTags syncs releases with tags in the database
 | 
			
		||||
func (g *GiteaLocalUploader) SyncTags() error {
 | 
			
		||||
	return models.SyncReleasesWithTags(g.repo, g.gitRepo)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateIssues creates issues
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -161,20 +161,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		relBatchSize := uploader.MaxBatchInsertSize("release")
 | 
			
		||||
		syncTags := false
 | 
			
		||||
		for len(releases) > 0 {
 | 
			
		||||
			if len(releases) <= relBatchSize {
 | 
			
		||||
				if len(releases) < relBatchSize {
 | 
			
		||||
					relBatchSize = len(releases)
 | 
			
		||||
				}
 | 
			
		||||
				syncTags = true
 | 
			
		||||
			if len(releases) < relBatchSize {
 | 
			
		||||
				relBatchSize = len(releases)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if err := uploader.CreateReleases(syncTags, releases[:relBatchSize]...); err != nil {
 | 
			
		||||
			if err := uploader.CreateReleases(releases[:relBatchSize]...); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue