package emapi import ( "go.equinixmetal.net/infra9-metal-bridge/internal/metal/models" ) type Roles []string type Memberships []*Membership func (m Memberships) ToDetailsWithOrganizationDetails(orgDetails *models.OrganizationDetails) []*models.Membership[models.OrganizationDetails] { memberships := make([]*models.Membership[models.OrganizationDetails], len(m)) var nextIndex int for _, membership := range m { memberships[nextIndex] = membership.ToDetailsWithOrganizationDetails(orgDetails) if memberships[nextIndex] != nil { nextIndex++ } } if nextIndex < len(m) { return memberships[:nextIndex] } return memberships } func (m Memberships) ToDetailsWithProjectDetails(projDetails *models.ProjectDetails) []*models.Membership[models.ProjectDetails] { memberships := make([]*models.Membership[models.ProjectDetails], len(m)) var nextIndex int for _, membership := range m { memberships[nextIndex] = membership.ToDetailsWithProjectDetails(projDetails) if memberships[nextIndex] != nil { nextIndex++ } } if nextIndex < len(m) { return memberships[:nextIndex] } return memberships } type Membership struct { client *Client HREF string `json:"href"` ID string `json:"id"` Roles Roles `json:"roles"` User *User `json:"user"` } func (m *Membership) ToDetailsWithOrganizationDetails(orgDetails *models.OrganizationDetails) *models.Membership[models.OrganizationDetails] { if m.ID == "" { return nil } return &models.Membership[models.OrganizationDetails]{ ID: m.ID, Roles: m.Roles, User: m.User.ToDetails(), Entity: orgDetails, } } func (m *Membership) ToDetailsWithProjectDetails(projDetails *models.ProjectDetails) *models.Membership[models.ProjectDetails] { if m.ID == "" { return nil } return &models.Membership[models.ProjectDetails]{ ID: m.ID, Roles: m.Roles, User: m.User.ToDetails(), Entity: projDetails, } }