initial commit
This commit is contained in:
84
internal/metal/providers/emapi/memberships.go
Normal file
84
internal/metal/providers/emapi/memberships.go
Normal file
@@ -0,0 +1,84 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user