code: func (c *Client) UpdateReading(r contract.Reading) error {
  	conn := c.Pool.Get()
  	defer conn.Close()
  
  	id := r.Id
  	o := contract.Reading{}
  	err := getObjectById(conn, id, unmarshalObject, &o)
  	if err != nil {
  		if err == redis.ErrNil {
  			return db.ErrNotFound
  		}
  		return err
  	}
  
  	r.Modified = db.MakeTimestamp()
  	err = mergo.Merge(&r, o)
  	if err != nil {
  		return err
  	}
  
  	err = deleteReading(conn, id)
  	if err != nil {
  		return err
  	}
  
  	if r.Id != "" {
  		_, err = uuid.Parse(r.Id)
  		if err != nil {
  			return db.ErrInvalidObjectId
  		}
  	}
  	_, err = addReading(conn, true, r)
  	return err
  }
docs: // Update a reading
  // 404 - reading cannot be found
  // 409 - Value descriptor doesn't exist
  // 503 - unknown issues