92 lines
2.4 KiB
Go
92 lines
2.4 KiB
Go
package emapi
|
|
|
|
import (
|
|
"go.equinixmetal.net/infra9-metal-bridge/internal/metal/models"
|
|
)
|
|
|
|
// Roles contains a list of roles.
|
|
type Roles []string
|
|
|
|
// Memberships contains a list of memberships
|
|
type Memberships []*Membership
|
|
|
|
// ToDetailsWithOrganizationDetails convers the memberships to generic membership models with organization details.
|
|
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
|
|
}
|
|
|
|
// ToDetailsWithProjectDetails convers the memberships to generic membership models with project details.
|
|
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
|
|
}
|
|
|
|
// Membership contains membership information.
|
|
type Membership struct {
|
|
client *Client
|
|
|
|
HREF string `json:"href"`
|
|
ID string `json:"id"`
|
|
Roles Roles `json:"roles"`
|
|
User *User `json:"user"`
|
|
}
|
|
|
|
// ToDetailsWithOrganizationDetails convers the membership to generic membership model with organization details.
|
|
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,
|
|
}
|
|
}
|
|
|
|
// ToDetailsWithOrganizationDetails convers the membership to generic membership model with organization details.
|
|
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,
|
|
}
|
|
}
|