use crate::facets::Facets;
use foyer::HybridCache;
use journal_index::{FieldName, FileIndex};
use journal_registry::File;
use serde::{Deserialize, Serialize};
const CACHE_VERSION: u32 = 2;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct FileIndexKey {
version: u32,
pub file: File,
pub(crate) facets: Facets,
pub(crate) source_timestamp_field: Option<FieldName>,
}
impl FileIndexKey {
pub fn new(file: &File, facets: &Facets, source_timestamp_field: Option<FieldName>) -> Self {
Self {
version: CACHE_VERSION,
file: file.clone(),
facets: facets.clone(),
source_timestamp_field,
}
}
}
pub type FileIndexCache = HybridCache<FileIndexKey, FileIndex>;