forked from evergreen-ci/evergreen
/
version.go
72 lines (62 loc) · 2.32 KB
/
version.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package model
import (
"github.com/evergreen-ci/evergreen/model"
"github.com/pkg/errors"
)
// APIVersion is the model to be returned by the API whenever versions are fetched.
type APIVersion struct {
Id APIString `json:"version_id"`
CreateTime APITime `json:"create_time"`
StartTime APITime `json:"start_time"`
FinishTime APITime `json:"finish_time"`
Revision APIString `json:"revision"`
Order int `json:"order"`
Project APIString `json:"project"`
Author APIString `json:"author"`
AuthorEmail APIString `json:"author_email"`
Message APIString `json:"message"`
Status APIString `json:"status"`
Repo APIString `json:"repo"`
Branch APIString `json:"branch"`
BuildVariants []buildDetail `json:"build_variants_status"`
Errors []APIString `json:"errors"`
Warnings []APIString `json:"warnings"`
Ignored bool `json:"ignored"`
}
type buildDetail struct {
BuildVariant APIString `json:"build_variant"`
BuildId APIString `json:"build_id"`
}
// BuildFromService converts from service level structs to an APIVersion.
func (apiVersion *APIVersion) BuildFromService(h interface{}) error {
v, ok := h.(*model.Version)
if !ok {
return errors.Errorf("incorrect type when fetching converting version type")
}
apiVersion.Id = ToAPIString(v.Id)
apiVersion.CreateTime = NewTime(v.CreateTime)
apiVersion.StartTime = NewTime(v.StartTime)
apiVersion.FinishTime = NewTime(v.FinishTime)
apiVersion.Revision = ToAPIString(v.Revision)
apiVersion.Author = ToAPIString(v.Author)
apiVersion.AuthorEmail = ToAPIString(v.AuthorEmail)
apiVersion.Message = ToAPIString(v.Message)
apiVersion.Status = ToAPIString(v.Status)
apiVersion.Repo = ToAPIString(v.Repo)
apiVersion.Branch = ToAPIString(v.Branch)
apiVersion.Order = v.RevisionOrderNumber
apiVersion.Project = ToAPIString(v.Identifier)
var bd buildDetail
for _, t := range v.BuildVariants {
bd = buildDetail{
BuildVariant: ToAPIString(t.BuildVariant),
BuildId: ToAPIString(t.BuildId),
}
apiVersion.BuildVariants = append(apiVersion.BuildVariants, bd)
}
return nil
}
// ToService returns a service layer build using the data from the APIVersion.
func (apiVersion *APIVersion) ToService() (interface{}, error) {
return nil, errors.New("not implemented for read-only route")
}