pub trait PaperRepository: Send + Sync {
// Required methods
fn save(&self, paper: &Paper) -> Result<(), CoreError>;
fn save_many(
&self,
papers: &[Paper],
) -> Result<HashMap<PaperId, PaperId>, CoreError>;
fn get(&self, paper_id: &str) -> Result<Option<Paper>, CoreError>;
fn find_by_doi(&self, doi: &str) -> Result<Option<Paper>, CoreError>;
fn find_by_title(&self, title: &str) -> Result<Option<Paper>, CoreError>;
fn list_all(&self, limit: i64, offset: i64) -> Result<Vec<Paper>, CoreError>;
}Expand description
Port for paper persistence.
Required Methods§
fn save(&self, paper: &Paper) -> Result<(), CoreError>
Sourcefn save_many(
&self,
papers: &[Paper],
) -> Result<HashMap<PaperId, PaperId>, CoreError>
fn save_many( &self, papers: &[Paper], ) -> Result<HashMap<PaperId, PaperId>, CoreError>
Save multiple papers, resolving DOI conflicts with existing records. Returns a map of original_id → resolved_id for papers whose ID was remapped to an existing record (callers should use this to fix up search_results and other references).