Select Git revision
item.go
item.go 1.01 KiB
package id
const (
Item = "item"
ItemsPrefix = "items"
)
type ItemID struct {
CollectionID
ItemID string `json:"item_id,omitempty" bson:"item_id,omitempty"`
}
func (t *ItemID) Type() string { return Item }
func (t *ItemID) String() string {
return Join(t.CollectionID.String(), ItemsPrefix, t.ItemID)
}
func (t *ItemID) ToMap() map[string]any {
m := t.CollectionID.ToMap()
m["item_id"] = t.ItemID
m["type"] = Item
return m
}
func (t *ItemID) FromMap(m map[string]any) error {
if err := t.CollectionID.FromMap(m); err != nil {
return err
}
t.ItemID = m["item_id"].(string)
return nil
}
func (t *ItemID) Validate() error {
if t.ItemID == "" {
return ErrInvalidID
}
return t.CollectionID.Validate()
}
func parseItemID(parts []string) (*ItemID, error) {
if len(parts) != 8 || parts[6] != ItemsPrefix {
return nil, ErrInvalidID
}
collID, err := parseCollectionID(parts[:6])
if err != nil {
return nil, err
}
var id ItemID
id.CollectionID = *collID
id.ItemID = parts[7]
return &id, nil
}