func (g GremlinBackend) SetMetadata(i interface{}, k string, v interface{}) bool { var e graphElement var elType string switch i.(type) { case *Node: e = i.(*Node).graphElement elType = "V" case *Edge: e = i.(*Edge).graphElement elType = "V" } properties, err := idToPropertiesString(e.ID) if err != nil { logging.GetLogger().Error("Error while retrieving a Node: %s", err.Error()) return false } encoder := gremlin.GremlinPropertiesEncoder{} encoder.EncodeKVPair(k, v) query := "g." + elType + "().has(" + properties + ").property(" + encoder.String() + ")" _, err = g.client.Query(query) if err != nil { logging.GetLogger().Error("Gremlin query error: %s, %s", query, err.Error()) return false } return true }
func idToPropertiesString(i Identifier) (string, error) { properties := map[string]interface{}{ "_ID": string(i), } encoder := gremlin.GremlinPropertiesEncoder{} err := encoder.Encode(properties) if err != nil { logging.GetLogger().Error("Error while retrieving a Node: %s", err.Error()) return "", err } return encoder.String(), nil }