Files
pile/crates/pile-value/src/source/mod.rs
2026-03-23 14:48:49 -07:00

28 lines
672 B
Rust

mod dir;
pub use dir::*;
mod s3;
pub use s3::*;
pub mod misc;
/// A read-only set of [Item]s.
pub trait DataSource {
/// Get the number of items in this source
fn len(&self) -> usize;
/// Get an item from this datasource
fn get(
&self,
key: &str,
) -> impl Future<Output = Result<Option<crate::value::Item>, std::io::Error>> + Send;
/// Iterate over all items in this source in an arbitrary order
fn iter(&self) -> impl Iterator<Item = &crate::value::Item>;
/// Return the time of the latest change to the data in this source
fn latest_change(
&self,
) -> impl Future<Output = Result<Option<chrono::DateTime<chrono::Utc>>, std::io::Error>> + Send;
}