Skip to content

Commit 3e72115

Browse files
starknet_patricia_storage: remove code dup for mget
1 parent 1e4407b commit 3e72115

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

crates/starknet_patricia_storage/src/rocksdb_storage.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,16 @@ impl RocksDbStorage {
262262
let db = Arc::new(DB::open(&options.db_options, path)?);
263263
Ok(Self { db, options: Arc::new(options), config })
264264
}
265+
266+
fn mget_from_raw_keys<K: AsRef<[u8]>, RK: IntoIterator<Item = K>>(
267+
raw_keys: RK,
268+
db: Arc<DB>,
269+
) -> PatriciaStorageResult<Vec<Option<DbValue>>> {
270+
db.multi_get(raw_keys)
271+
.into_iter()
272+
.map(|r| r.map(|opt| opt.map(DbValue)).map_err(|e| e.into()))
273+
.collect::<Result<Vec<_>, PatriciaStorageError>>()
274+
}
265275
}
266276

267277
#[derive(Debug, Default)]
@@ -306,22 +316,10 @@ impl Storage for RocksDbStorage {
306316
if self.config.spawn_blocking_reads {
307317
let db = self.db.clone();
308318
let keys: Vec<Vec<u8>> = keys.iter().map(|k| k.0.clone()).collect();
309-
Ok(spawn_blocking(move || {
310-
let raw_keys = keys.iter().map(|k| k.as_slice());
311-
db.multi_get(raw_keys)
312-
.into_iter()
313-
.map(|r| r.map(|opt| opt.map(DbValue)).map_err(|e| e.into()))
314-
.collect::<Result<Vec<_>, PatriciaStorageError>>()
315-
})
316-
.await??)
319+
Ok(spawn_blocking(move || Self::mget_from_raw_keys(keys, db)).await??)
317320
} else {
318321
let raw_keys = keys.iter().map(|k| k.0.as_slice());
319-
Ok(self
320-
.db
321-
.multi_get(raw_keys)
322-
.into_iter()
323-
.map(|r| r.map(|opt| opt.map(DbValue)).map_err(|e| e.into()))
324-
.collect::<Result<Vec<_>, PatriciaStorageError>>()?)
322+
Ok(Self::mget_from_raw_keys(raw_keys, self.db.clone())?)
325323
}
326324
}
327325

0 commit comments

Comments
 (0)