Select Git revision
client.go 1.16 KiB
package id
const (
Client = "client"
ClientsPrefix = "clients"
)
type ClientID struct {
SpaceID
ClientID string `json:"client_id,omitempty" bson:"client_id,omitempty"`
}
func (t *ClientID) Type() string { return Client }
func (t *ClientID) String() string {
return Join(t.SpaceID.String(), ClientsPrefix, t.ClientID)
}
func (t *ClientID) ToMap() map[string]any {
m := t.SpaceID.ToMap()
m["client_id"] = t.ClientID
m["type"] = Client
return m
}
func (t *ClientID) FromMap(m map[string]any) error {
if err := t.SpaceID.FromMap(m); err != nil {
return err
}
t.ClientID = m["client_id"].(string)
return nil
}
func (t *ClientID) Validate() error {
if t.ClientID == "" {
return ErrInvalidID
}
return t.SpaceID.Validate()
}
func parseClientID(parts []string) (*ClientID, error) {
if len(parts) != 4 || parts[2] != ClientsPrefix {
return nil, ErrInvalidID
}
spaceID, err := parseSpaceID(parts[:2])
if err != nil {
return nil, err
}
var id ClientID
id.SpaceID = *spaceID
id.ClientID = parts[3]
return &id, nil
}
func NewClientID(spaceID, id string) *ID {
return &ID{Descriptor: &ClientID{SpaceID: SpaceID{SpaceID: spaceID}, ClientID: id}}
}