Select Git revision
role.go 1.10 KiB
package id
const (
Role = "role"
RolesPrefix = "roles"
)
type RoleID struct {
SpaceID
RoleID string `json:"role_id,omitempty" bson:"role_id,omitempty"`
}
func (t *RoleID) Type() string { return Role }
func (t *RoleID) String() string {
return Join(t.SpaceID.String(), RolesPrefix, t.RoleID)
}
func (t *RoleID) ToMap() map[string]any {
m := t.SpaceID.ToMap()
m["role_id"] = t.RoleID
m["type"] = Role
return m
}
func (t *RoleID) FromMap(m map[string]any) error {
if err := t.SpaceID.FromMap(m); err != nil {
return err
}
t.RoleID = m["role_id"].(string)
return nil
}
func (t *RoleID) Validate() error {
if t.RoleID == "" {
return ErrInvalidID
}
return t.SpaceID.Validate()
}
func parseRoleID(parts []string) (*RoleID, error) {
if len(parts) != 4 || parts[2] != RolesPrefix {
return nil, ErrInvalidID
}
spaceID, err := parseSpaceID(parts[:2])
if err != nil {
return nil, err
}
var id RoleID
id.SpaceID = *spaceID
id.RoleID = parts[3]
return &id, nil
}
func NewRoleID(spaceID, id string) *ID {
return &ID{Descriptor: &RoleID{SpaceID: SpaceID{SpaceID: spaceID}, RoleID: id}}
}