| 182 | } |
| 183 | |
| 184 | fn transact_write_items( |
| 185 | &self, |
| 186 | ops: &[TransactWriteOp<'_>], |
| 187 | token: Option<(&str, &str)>, |
| 188 | ) -> BoxFuture<'_, Result<(), StorageError>> { |
| 189 | // Clone ops to owned data - unavoidable due to lifetime constraints |
| 190 | let owned_ops: Vec<_> = ops |
| 191 | .iter() |
| 192 | .map(|op| match op { |
| 193 | TransactWriteOp::Put { |
| 194 | key_info, |
| 195 | item, |
| 196 | condition, |
| 197 | maps, |
| 198 | return_values_on_ccf, |
| 199 | stream, |
| 200 | } => ( |
| 201 | 0u8, |
| 202 | (*key_info).clone(), |
| 203 | (*item).clone(), |
| 204 | None, |
| 205 | Vec::new(), |
| 206 | condition.cloned(), |
| 207 | (*maps).clone(), |
| 208 | *return_values_on_ccf, |
| 209 | stream.clone(), |
| 210 | ), |
| 211 | TransactWriteOp::Delete { |
| 212 | key_info, |
| 213 | key, |
| 214 | condition, |
| 215 | maps, |
| 216 | return_values_on_ccf, |
| 217 | stream, |
| 218 | } => ( |
| 219 | 1u8, |
| 220 | (*key_info).clone(), |
| 221 | (*key).clone(), |
| 222 | None, |
| 223 | Vec::new(), |
| 224 | condition.cloned(), |
| 225 | (*maps).clone(), |
| 226 | *return_values_on_ccf, |
| 227 | stream.clone(), |
| 228 | ), |
| 229 | TransactWriteOp::Update { |
| 230 | key_info, |
| 231 | key, |
| 232 | actions, |
| 233 | condition, |
| 234 | maps, |
| 235 | return_values_on_ccf, |
| 236 | stream, |
| 237 | } => ( |
| 238 | 2u8, |
| 239 | (*key_info).clone(), |
| 240 | (*key).clone(), |
| 241 | None, |