initial commit

This commit is contained in:
Mike Mason
2023-07-01 00:04:52 +00:00
commit 80fb879ef6
65 changed files with 3544 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
package models
const (
// IDPrefixOrganization defines the ID Prefix for an Organization.
IDPrefixOrganization = "metlorg"
// IDPrefixProject defines the ID Prefix for a Project.
IDPrefixProject = "metlprj"
// IDPrefixUser defines the ID Prefix for a User.
IDPrefixUser = "metlusr"
)

View File

@@ -0,0 +1,8 @@
package models
type Membership[T any] struct {
ID string `json:"id"`
User *UserDetails `json:"user"`
Entity *T `json:"entity"`
Roles []string `json:"roles"`
}

View File

@@ -0,0 +1,18 @@
package models
import "go.infratographer.com/x/gidx"
type OrganizationDetails struct {
ID string `json:"id"`
Name string `json:"name"`
Memberships []*Membership[OrganizationDetails] `json:"memberships"`
Projects []*ProjectDetails `json:"projects"`
}
func (d *OrganizationDetails) PrefixedID() gidx.PrefixedID {
if d.ID == "" {
return gidx.NullPrefixedID
}
return gidx.PrefixedID(IDPrefixOrganization + "-" + d.ID)
}

View File

@@ -0,0 +1,18 @@
package models
import "go.infratographer.com/x/gidx"
type ProjectDetails struct {
ID string `json:"id"`
Name string `json:"name"`
Memberships []*Membership[ProjectDetails] `json:"memberships"`
Organization *OrganizationDetails `json:"organization"`
}
func (d *ProjectDetails) PrefixedID() gidx.PrefixedID {
if d.ID == "" {
return gidx.NullPrefixedID
}
return gidx.PrefixedID(IDPrefixProject + "-" + d.ID)
}

View File

@@ -0,0 +1,23 @@
package models
import "go.infratographer.com/x/gidx"
const (
MetalUserPrefix = "metlusr"
)
type UserDetails struct {
ID string `json:"id"`
FullName string `json:"full_name"`
Organizations []*OrganizationDetails `json:"organizations"`
Projects []*ProjectDetails `json:"projects"`
Roles []string `json:"roles"`
}
func (d *UserDetails) PrefixedID() gidx.PrefixedID {
if d.ID == "" {
return gidx.NullPrefixedID
}
return gidx.PrefixedID(IDPrefixUser + "-" + d.ID)
}