| Index: common/api/dm/service/v1/datastore_embed.go
|
| diff --git a/common/api/dm/service/v1/datastore_embed.go b/common/api/dm/service/v1/datastore_embed.go
|
| index 7ac472371a07fcf095790f26e77633d547f6f2af..dc4a8dee434854259a8db0aa4bb33c4b1f4bbbcd 100644
|
| --- a/common/api/dm/service/v1/datastore_embed.go
|
| +++ b/common/api/dm/service/v1/datastore_embed.go
|
| @@ -15,7 +15,6 @@ import (
|
| const flipMask uint32 = 0xFFFFFFFF
|
|
|
| var _ datastore.PropertyConverter = (*Attempt_ID)(nil)
|
| -var _ datastore.PropertyConverter = (*Execution_ID)(nil)
|
|
|
| // NewQuestID is a shorthand to New a new *Quest_ID
|
| func NewQuestID(qst string) *Quest_ID {
|
| @@ -75,54 +74,6 @@ func (a *Attempt_ID) SetDMEncoded(val string) error {
|
| return nil
|
| }
|
|
|
| -// ToProperty implements datastore.PropertyConverter for the purpose of
|
| -// embedding this Execution_ID as the ID of a luci/gae compatible datastore
|
| -// object. The numerical id field is stored as an inverted, hex-encoded string,
|
| -// so that Execution_ID{"quest", 1, 2} would encode as "quest|fffffffe|fffffffd".
|
| -// This is done so that the __key__ ordering in the dm application prefers to
|
| -// order the most recent executions first.
|
| -//
|
| -// The go representation will always have the normal non-flipped numerical ids.
|
| -func (e *Execution_ID) ToProperty() (datastore.Property, error) {
|
| - return datastore.MkPropertyNI(e.DMEncoded()), nil
|
| -}
|
| -
|
| -// FromProperty implements datastore.PropertyConverter
|
| -func (e *Execution_ID) FromProperty(p datastore.Property) error {
|
| - if p.Type() != datastore.PTString {
|
| - return fmt.Errorf("wrong type for property: %s", p.Type())
|
| - }
|
| - return e.SetDMEncoded(p.Value().(string))
|
| -}
|
| -
|
| -// DMEncoded returns the encoded inverted string id for this Execution. Numeric
|
| -// values are inverted if flip is true.
|
| -func (e *Execution_ID) DMEncoded() string {
|
| - return fmt.Sprintf("%s|%08x|%08x", e.Quest, flipMask^e.Attempt, flipMask^e.Id)
|
| -}
|
| -
|
| -// SetDMEncoded decodes val into this Execution_ID, returning an error if
|
| -// there's a problem. Numeric values are inverted if flip is true.
|
| -func (e *Execution_ID) SetDMEncoded(val string) error {
|
| - toks := strings.SplitN(val, "|", 3)
|
| - if len(toks) != 3 {
|
| - return fmt.Errorf("unable to parse Execution id: %q", val)
|
| - }
|
| - an, err := strconv.ParseUint(toks[1], 16, 32)
|
| - if err != nil {
|
| - return err
|
| - }
|
| - en, err := strconv.ParseUint(toks[2], 16, 32)
|
| - if err != nil {
|
| - return err
|
| - }
|
| -
|
| - e.Quest = toks[0]
|
| - e.Attempt = flipMask ^ uint32(an)
|
| - e.Id = flipMask ^ uint32(en)
|
| - return nil
|
| -}
|
| -
|
| // GetQuest gets the specified quest from GraphData, if it's already there. If
|
| // it's not, then a new Quest will be created, added, and returned.
|
| //
|
| @@ -143,8 +94,8 @@ func (g *GraphData) GetQuest(qid string) (*Quest, bool) {
|
| }
|
|
|
| // NewQuestDesc is a shorthand method for building a new *Quest_Desc.
|
| -func NewQuestDesc(cfg string, js string) *Quest_Desc {
|
| - return &Quest_Desc{cfg, js}
|
| +func NewQuestDesc(cfg string, js string, meta *Quest_Desc_Meta) *Quest_Desc {
|
| + return &Quest_Desc{cfg, js, meta}
|
| }
|
|
|
| // NewTemplateSpec is a shorthand method for building a new *Quest_TemplateSpec.
|
|
|