28 lines
677 B
Rust
28 lines
677 B
Rust
mod dir;
|
|
pub use dir::*;
|
|
|
|
mod s3;
|
|
pub use s3::*;
|
|
|
|
pub mod misc;
|
|
|
|
use chrono::{DateTime, Utc};
|
|
use tokio_stream::wrappers::ReceiverStream;
|
|
|
|
/// A read-only set of [Item]s.
|
|
pub trait DataSource {
|
|
/// 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) -> ReceiverStream<Result<crate::value::Item, std::io::Error>>;
|
|
|
|
/// Return the time of the latest change to the data in this source
|
|
fn latest_change(
|
|
&self,
|
|
) -> impl Future<Output = Result<Option<DateTime<Utc>>, std::io::Error>> + Send;
|
|
}
|