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  }