Skip to content

Commit 51d12f6

Browse files
committed
implement missing Storage fn for AsyncStorage
1 parent b5dc49b commit 51d12f6

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

libsql-wal/src/storage/async_storage.rs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -216,31 +216,38 @@ where
216216

217217
async fn find_segment(
218218
&self,
219-
_namespace: &NamespaceName,
220-
_frame_no: u64,
221-
_config_override: Option<Arc<Self::Config>>,
222-
) -> super::Result<super::backend::s3::SegmentKey> {
223-
todo!()
219+
namespace: &NamespaceName,
220+
frame_no: u64,
221+
config_override: Option<Arc<Self::Config>>,
222+
) -> super::Result<super::SegmentKey> {
223+
let config = config_override.unwrap_or_else(|| self.backend.default_config());
224+
let key = self.backend.find_segment(&config, namespace, frame_no).await?;
225+
Ok(key)
224226
}
225227

226228
async fn fetch_segment_index(
227229
&self,
228-
_namespace: &NamespaceName,
229-
_key: super::backend::s3::SegmentKey,
230-
_config_override: Option<Arc<Self::Config>>,
230+
namespace: &NamespaceName,
231+
key: &super::SegmentKey,
232+
config_override: Option<Arc<Self::Config>>,
231233
) -> super::Result<fst::Map<Arc<[u8]>>> {
232-
todo!()
234+
let config = config_override.unwrap_or_else(|| self.backend.default_config());
235+
let index = self.backend.fetch_segment_index(&config, namespace, key).await?;
236+
Ok(index)
233237
}
234238

235239
async fn fetch_segment_data(
236240
&self,
237-
_namespace: &NamespaceName,
238-
_key: super::backend::s3::SegmentKey,
239-
_config_override: Option<Arc<Self::Config>>,
241+
namespace: &NamespaceName,
242+
key: &super::SegmentKey,
243+
config_override: Option<Arc<Self::Config>>,
240244
) -> super::Result<CompactedSegment<impl FileExt>> {
241-
todo!();
242-
#[allow(unreachable_code)]
243-
super::Result::<CompactedSegment<std::fs::File>>::Err(super::Error::InvalidIndex(""))
245+
// TODO: make async
246+
let config = config_override.unwrap_or_else(|| self.backend.default_config());
247+
let backend = self.backend.clone();
248+
let file = backend.fetch_segment_data(config, namespace.clone(), *key).await?;
249+
let segment = CompactedSegment::open(file).await?;
250+
Ok(segment)
244251
}
245252
}
246253

0 commit comments

Comments
 (0)