Select Git revision
organization.go
field.go 1.29 KiB
package id
const (
Field = "field"
FieldsPrefix = "fields"
)
type FieldID struct {
ItemID
FieldName string `json:"field_name,omitempty" bson:"field_name,omitempty"`
}
func (t *FieldID) Type() string { return Field }
func (t *FieldID) String() string {
return Join(t.ItemID.String(), FieldsPrefix, t.FieldName)
}
func (t *FieldID) ToMap() map[string]any {
m := t.ItemID.ToMap()
m["field_name"] = t.FieldName
m["type"] = Field
return m
}
func (t *FieldID) FromMap(m map[string]any) error {
if err := t.ItemID.FromMap(m); err != nil {
return err
}
t.FieldName = m["field_name"].(string)
return nil
}
func (t *FieldID) Validate() error {
if t.FieldName == "" {
return ErrInvalidID
}
return t.ItemID.Validate()
}
func parseFieldID(parts []string) (*FieldID, error) {
if len(parts) != 10 || parts[8] != FieldsPrefix {
return nil, ErrInvalidID
}
itemID, err := parseItemID(parts[:8])
if err != nil {
return nil, err
}
var id FieldID
id.ItemID = *itemID
id.FieldName = parts[9]
return &id, nil
}
func NewFieldID(spaceID, envID, collID, itemID, id string) *ID {
return &ID{Descriptor: &FieldID{ItemID: ItemID{CollectionID: CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: collID}, ItemID: itemID}, FieldName: id}}
}