github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/platform/api/graphql/model/projectconv.go (about) 1 package model 2 3 import ( 4 "time" 5 6 "github.com/go-openapi/strfmt" 7 8 "github.com/ActiveState/cli/internal/errs" 9 "github.com/ActiveState/cli/pkg/platform/api/mono/mono_models" 10 ) 11 12 func (bs Branches) ToMonoBranches() mono_models.Branches { 13 if bs == nil { 14 return nil 15 } 16 17 var mbs mono_models.Branches 18 for _, b := range bs { 19 mbs = append(mbs, b.ToMonoBranch()) 20 } 21 22 return mbs 23 } 24 25 func (b *Branch) ToMonoBranch() *mono_models.Branch { 26 return &mono_models.Branch{ 27 BranchID: b.BranchID, 28 CommitID: b.CommitID, 29 Default: ptrBoolToBool(b.Main), 30 Label: b.Label, 31 ProjectID: *b.ProjectID, // potential to orphan? 32 TrackingType: b.TrackingType, 33 Tracks: b.Tracks, 34 } 35 } 36 37 func (p *Project) ToMonoProject() (*mono_models.Project, error) { 38 for _, b := range p.Branches { 39 if b.ProjectID == nil { 40 return nil, errs.New("branch does not have project ID") 41 } 42 } 43 44 mp := mono_models.Project{ 45 Added: makeStrfmtDateTime(p.Added), 46 Branches: p.Branches.ToMonoBranches(), 47 CreatedBy: ptrStrfmtUUIDToPtrString(p.CreatedBy), 48 Description: p.Description, 49 ForkedFrom: forkedProjectToMonoForkedFrom(p.ForkedProject), 50 LastEdited: makeStrfmtDateTime(p.Changed), 51 Managed: p.Managed, 52 Name: p.Name, 53 OrganizationID: p.OrganizationID, 54 Private: p.Private, 55 ProjectID: p.ProjectID, 56 RepoURL: p.RepoURL, 57 } 58 59 return &mp, nil 60 } 61 62 func makeStrfmtDateTime(t Time) strfmt.DateTime { 63 dt, err := strfmt.ParseDateTime(t.Time.Format(time.RFC3339)) 64 if err != nil { 65 panic(err) // this should never happen 66 } 67 return dt 68 } 69 70 func forkedProjectToMonoForkedFrom(fp *ForkedProject) *mono_models.ProjectForkedFrom { 71 if fp == nil { 72 return nil 73 } 74 return &mono_models.ProjectForkedFrom{ 75 Project: fp.Name, 76 Organization: fp.Organization.URLName, 77 } 78 } 79 80 func ptrStrfmtUUIDToPtrString(id *strfmt.UUID) *string { 81 if id == nil { 82 return nil 83 } 84 s := id.String() 85 return &s 86 } 87 88 func ptrBoolToBool(b *bool) bool { 89 if b == nil { 90 return false 91 } 92 return *b 93 }