blob: cfd5c5a809ef61de574b71c929048278697c6398 [file] [log] [blame]
package tasks
import (
"context"
lakeModels "github.com/merico-dev/lake/models"
"github.com/merico-dev/lake/models/domainlayer"
"github.com/merico-dev/lake/models/domainlayer/devops"
"github.com/merico-dev/lake/models/domainlayer/didgen"
jenkinsModels "github.com/merico-dev/lake/plugins/jenkins/models"
"gorm.io/gorm/clause"
)
func ConvertBuilds(ctx context.Context) error {
err := lakeModels.Db.Where("id like 'jenkins:JenkinsBuild:%'").Delete(&devops.Build{}).Error
if err != nil {
return err
}
jenkinsBuild := &jenkinsModels.JenkinsBuild{}
cursor, err := lakeModels.Db.Model(jenkinsBuild).Rows()
if err != nil {
return err
}
defer cursor.Close()
jobIdGen := didgen.NewDomainIdGenerator(&jenkinsModels.JenkinsJob{})
buildIdGen := didgen.NewDomainIdGenerator(&jenkinsModels.JenkinsBuild{})
// iterate all rows
for cursor.Next() {
err = lakeModels.Db.ScanRows(cursor, jenkinsBuild)
if err != nil {
return err
}
build := &devops.Build{
DomainEntity: domainlayer.DomainEntity{
Id: buildIdGen.Generate(jenkinsBuild.JobName, jenkinsBuild.Number),
},
JobId: jobIdGen.Generate(jenkinsBuild.JobName),
Name: jenkinsBuild.DisplayName,
DurationSec: uint64(jenkinsBuild.Duration),
Status: jenkinsBuild.Result,
StartedDate: jenkinsBuild.StartTime,
CommitSha: jenkinsBuild.CommitSha,
}
err = lakeModels.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(build).Error
if err != nil {
return err
}
}
return nil
}