github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/present/build.go (about)

     1  package present
     2  
     3  import (
     4  	"strconv"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc"
     7  	"github.com/pf-qiu/concourse/v6/atc/db"
     8  	"github.com/tedsuo/rata"
     9  )
    10  
    11  func Build(build db.Build) atc.Build {
    12  
    13  	apiURL, err := atc.Routes.CreatePathForRoute(atc.GetBuild, rata.Params{
    14  		"build_id":  strconv.Itoa(build.ID()),
    15  		"team_name": build.TeamName(),
    16  	})
    17  	if err != nil {
    18  		panic("failed to generate url: " + err.Error())
    19  	}
    20  
    21  	atcBuild := atc.Build{
    22  		ID:                   build.ID(),
    23  		Name:                 build.Name(),
    24  		JobName:              build.JobName(),
    25  		ResourceName:         build.ResourceName(),
    26  		PipelineID:           build.PipelineID(),
    27  		PipelineName:         build.PipelineName(),
    28  		PipelineInstanceVars: build.PipelineInstanceVars(),
    29  		TeamName:             build.TeamName(),
    30  		Status:               atc.BuildStatus(build.Status()),
    31  		APIURL:               apiURL,
    32  	}
    33  
    34  	if build.RerunOf() != 0 {
    35  		atcBuild.RerunNumber = build.RerunNumber()
    36  		atcBuild.RerunOf = &atc.RerunOfBuild{
    37  			Name: build.RerunOfName(),
    38  			ID:   build.RerunOf(),
    39  		}
    40  	}
    41  
    42  	if !build.StartTime().IsZero() {
    43  		atcBuild.StartTime = build.StartTime().Unix()
    44  	}
    45  
    46  	if !build.EndTime().IsZero() {
    47  		atcBuild.EndTime = build.EndTime().Unix()
    48  	}
    49  
    50  	if !build.ReapTime().IsZero() {
    51  		atcBuild.ReapTime = build.ReapTime().Unix()
    52  	}
    53  
    54  	return atcBuild
    55  }