// PutMulti is a batch version of Put. One PendingKey is returned for each // element of src in the same order. func (t *Transaction) PutMulti(keys []*Key, src interface{}) ([]*PendingKey, error) { if t.id == nil { return nil, errExpiredTransaction } mutation, err := putMutation(keys, src) if err != nil { return nil, err } proto.Merge(t.mutation, mutation) // Prepare the returned handles, pre-populating where possible. ret := make([]*PendingKey, len(keys)) for i, key := range keys { h := &PendingKey{} if key.Incomplete() { // This key will be in the final commit result. t.pending = append(t.pending, h) } else { h.key = key } ret[i] = h } return ret, nil }
// DeleteMulti is a batch version of Delete. func (t *Transaction) DeleteMulti(keys []*Key) error { if t.id == nil { return errExpiredTransaction } mutation, err := deleteMutation(keys) if err != nil { return err } proto.Merge(t.mutation, mutation) return nil }