pub type BlockHeight = u64;
#[derive(Default, Builder, Debug)]
#[builder(pattern = "owned")]
pub struct LakeConfig {
#[builder(setter(into))]
pub(crate) s3_bucket_name: String,
#[builder(setter(into))]
pub(crate) s3_region_name: String,
pub(crate) start_block_height: u64,
#[builder(setter(strip_option), default)]
pub(crate) s3_config: Option<aws_sdk_s3::config::Config>,
#[builder(default = "100")]
pub(crate) blocks_preload_pool_size: usize,
}
impl LakeConfigBuilder {
pub fn mainnet(mut self) -> Self {
self.s3_bucket_name = Some("near-lake-data-mainnet".to_string());
self.s3_region_name = Some("eu-central-1".to_string());
self
}
pub fn testnet(mut self) -> Self {
self.s3_bucket_name = Some("near-lake-data-testnet".to_string());
self.s3_region_name = Some("eu-central-1".to_string());
self
}
}
#[allow(clippy::enum_variant_names)]
#[derive(thiserror::Error, Debug)]
pub enum LakeError<E> {
#[error("Failed to parse structure from JSON: {error_message}")]
ParseError {
#[from]
error_message: serde_json::Error,
},
#[error("AWS S3 error")]
AwsError {
#[from]
error: aws_sdk_s3::types::SdkError<E>,
},
#[error("Failed to convert integer")]
IntConversionError {
#[from]
error: std::num::TryFromIntError,
},
}