Select Git revision

Pavel Antonov authored
item.go 1.08 KiB
package id
import "fmt"
const (
Item = "item"
ItemsPrefix = "items"
)
type ItemId struct {
CollectionId
ItemID string `json:"item_id,omitempty" bson:"item_id,omitempty"`
}
func (i *ItemId) New() Descriptor {
return &ItemId{}
}
func (i *ItemId) Type() string { return Item }
func (i *ItemId) String() string {
return Join(i.CollectionId.String(), ItemsPrefix, i.ItemID)
}
func (i *ItemId) Map() map[string]any {
m := i.CollectionId.Map()
m["item_id"] = i.ItemID
m["type"] = Item
return m
}
func (i *ItemId) FromParts(parts []string) error {
if len(parts) != 8 || parts[6] != ItemsPrefix {
return ErrInvalid
}
if err := i.CollectionId.FromParts(parts[:6]); err != nil {
return err
}
i.ItemID = parts[7]
return nil
}
func (i *ItemId) FromMap(m map[string]any) error {
i.ItemID = m["item_id"].(string)
if i.ItemID == "" {
return fmt.Errorf("%w: ItemId required", ErrInvalid)
}
return i.CollectionId.FromMap(m)
}
func (i *ItemId) Validate() error {
if i.ItemID == "" {
return fmt.Errorf("%w: ItemId required", ErrInvalid)
}
return i.CollectionId.Validate()
}