use crate::storage::data_format::DataFormat;
use crate::Result;
use bytes::Bytes;
use futures::Stream;
use std::future::Future;
pub struct TableData<S: Stream<Item = Result<Bytes>> + Send, C: AsyncCleanup> {
pub data: S,
pub data_format: DataFormat,
pub cleanup: C,
}
pub trait AsyncCleanup: Send {
fn cleanup(self) -> impl Future<Output = Result<()>> + Send;
}
impl AsyncCleanup for () {
async fn cleanup(self) -> Result<()> {
Ok(())
}
}
impl<S: Stream<Item = Result<Bytes>> + Send, C: AsyncCleanup> AsyncCleanup for TableData<S, C> {
fn cleanup(self) -> impl Future<Output = Result<()>> + Send {
self.cleanup.cleanup()
}
}