Files
pile/crates/pile-value/src/source/mod.rs
rm-dr 0792b2f2c6
Some checks failed
CI / Typos (push) Successful in 34s
CI / Clippy (push) Successful in 1m17s
CI / Build and test (all features) (push) Failing after 5m15s
CI / Build and test (push) Failing after 10m29s
Proxy router
2026-03-23 22:25:23 -07:00

33 lines
859 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 sorted key order
fn iter(&self) -> impl Iterator<Item = &crate::value::Item>;
/// Iterate over a page of items, sorted by key
fn iter_page(&self, offset: usize, limit: usize) -> impl Iterator<Item = &crate::value::Item> {
self.iter().skip(offset).take(limit)
}
/// 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;
}