Select Git revision
user.go 860 B
package id
const (
User = "user"
UsersPrefix = "users"
)
type UserID struct {
UserID string `json:"user_id,omitempty" bson:"user_id,omitempty"`
}
func (t *UserID) Type() string { return User }
func (t *UserID) String() string {
return Join(UsersPrefix, t.UserID)
}
func (t *UserID) ToMap() map[string]any {
return map[string]any{
"user_id": t.UserID,
"type": User,
}
}
func (t *UserID) FromMap(m map[string]any) error {
t.UserID = m["user_id"].(string)
return nil
}
func (t *UserID) Validate() error {
if t.UserID == "" {
return ErrInvalidID
}
return nil
}
func parseUserID(parts []string) (*UserID, error) {
var id UserID
if len(parts) != 2 || parts[0] != UsersPrefix {
return nil, ErrInvalidID
}
id.UserID = parts[1]
return &id, nil
}
func NewUserID(id string) *ID {
return &ID{Descriptor: &UserID{UserID: id}}
}