Select Git revision
user.go 1.11 KiB
package id
import (
"fmt"
"git.perx.ru/perxis/perxis-go/pkg/users"
)
const (
User = "user"
UsersPrefix = "users"
)
type UserId struct {
UserID string `json:"user_id,omitempty" bson:"user_id,omitempty"`
}
var _ Descriptor = &UserId{}
func (id *UserId) New() Descriptor {
return &UserId{}
}
func (id *UserId) Type() string { return User }
func (id *UserId) String() string {
return Join(UsersPrefix, id.UserID)
}
func (id *UserId) FromParts(parts []string) error {
if len(parts) != 2 || parts[0] != UsersPrefix {
return ErrInvalidID
}
id.UserID = parts[1]
return nil
}
func (id *UserId) Map() map[string]any {
return map[string]any{
"user_id": id.UserID,
"type": id.Type(),
}
}
func (id *UserId) FromMap(m map[string]any) error {
id.UserID, _ = m["user_id"].(string)
if id.UserID == "" {
return fmt.Errorf("%w: UserId required", ErrInvalidID)
}
return nil
}
func (id *UserId) Validate() error {
if id.UserID == "" {
return fmt.Errorf("%w: UserId required", ErrInvalidID)
}
return nil
}
func NewUserId(u users.User) *ObjectId {
return &ObjectId{Descriptor: &UserId{UserID: u.ID}}
}