Select Git revision
revision.go
revision.go 1.33 KiB
package id
const (
Revision = "revision"
RevisionsPrefix = "revs"
)
type RevisionID struct {
ItemID
RevisionID string `json:"rev_id" bson:"rev_id,omitempty"`
}
func (t *RevisionID) Type() string { return Revision }
func (t *RevisionID) String() string {
return Join(t.ItemID.String(), RevisionsPrefix, t.RevisionID)
}
func (t *RevisionID) ToMap() map[string]any {
m := t.ItemID.ToMap()
m["rev_id"] = t.RevisionID
m["type"] = Revision
return m
}
func (t *RevisionID) FromMap(m map[string]any) error {
if err := t.ItemID.FromMap(m); err != nil {
return err
}
t.RevisionID = m["rev_id"].(string)
return nil
}
func (t *RevisionID) Validate() error {
if t.RevisionID == "" {
return ErrInvalidID
}
return t.ItemID.Validate()
}
func parseRevisionID(parts []string) (*RevisionID, error) {
if len(parts) != 10 || parts[8] != RevisionsPrefix {
return nil, ErrInvalidID
}
itemID, err := parseItemID(parts[:8])
if err != nil {
return nil, err
}
var id RevisionID
id.ItemID = *itemID
id.RevisionID = parts[9]
return &id, nil
}
func NewRevisionID(spaceID, envID, collID, itemID, id string) *ID {
return &ID{Descriptor: &RevisionID{ItemID: ItemID{CollectionID: CollectionID{EnvironmentID: EnvironmentID{SpaceID: SpaceID{SpaceID: spaceID}, EnvironmentID: envID}, CollectionID: collID}, ItemID: itemID}, RevisionID: id}}
}