use std::{
fs::{File, OpenOptions},
path::PathBuf,
sync::RwLock,
};
use super::subscan::SubscanConfig;
use crate::enums::cache::CacheFilter;
#[derive(Clone, Default)]
pub struct PoolConfig {
pub concurrency: u64,
pub filter: CacheFilter,
pub print: bool,
pub stream: Option<PathBuf>,
}
impl From<SubscanConfig> for PoolConfig {
fn from(config: SubscanConfig) -> Self {
Self {
concurrency: config.concurrency,
filter: config.filter,
print: config.print,
stream: config.stream,
}
}
}
impl PoolConfig {
pub async fn get_stream_file(&self) -> Option<RwLock<File>> {
self.stream.as_ref().map(|path| {
RwLock::new(
OpenOptions::new()
.create(true)
.append(true)
.read(true)
.truncate(false)
.open(path)
.unwrap_or_else(|_| panic!("Cannot create {} file!", path.to_str().unwrap())),
)
})
}
}