Exemplo n.º 1
0
// uuid -> feedinfo
func SaveFeedinfo(rdb *Store, uuidStr string, info *pb.Feedinfo) error {
	uuid1, err := uuid.FromString(uuidStr)
	if err != nil {
		return err
	}

	bytes, err := proto.Marshal(info)
	if err != nil {
		return err
	}

	key := NewUUIDKey(TableFeedinfo, uuid1)
	if info.RemoteKey != "" {
		return rdb.Put(key.Bytes(), bytes)
	}

	// retrieve remote key
	rawdata, err := rdb.Get(key.Bytes())
	if err != nil {
		return err
	}

	if len(rawdata) != 0 {
		old := new(pb.Feedinfo)
		err = proto.Unmarshal(rawdata, old)
		if err != nil {
			return err
		}
		info.RemoteKey = old.RemoteKey
	}

	bytes, err = proto.Marshal(info)
	if err != nil {
		return err
	}

	return rdb.Put(key.Bytes(), bytes)
}