code: func (c *Client) UpdateValueDescriptor(v contract.ValueDescriptor) error {
  	conn := c.Pool.Get()
  	defer conn.Close()
  
  	id := v.Id
  	o, err := valueByName(conn, v.Name)
  	if err != nil && err != redis.ErrNil {
  		return err
  	}
  	if err == nil && o.Id != v.Id {
  		// IDs are different -> name not unique
  		return db.ErrNotUnique
  	}
  
  	v.Modified = db.MakeTimestamp()
  	err = mergo.Merge(&v, o)
  	if err != nil {
  		return err
  	}
  
  	err = deleteValue(conn, id)
  	if err != nil {
  		return err
  	}
  
  	_, err = addValue(conn, v)
  	return err
  }
docs: // Update a value descriptor
  // First use the ID for identification, then the name
  // TODO: Check for the valid printf formatting
  // 404 not found if the value descriptor cannot be found by the identifiers