Skip to main content

PaperRepository

Trait PaperRepository 

Source
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§

Source

fn save(&self, paper: &Paper) -> Result<(), CoreError>

Source

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).

Source

fn get(&self, paper_id: &str) -> Result<Option<Paper>, CoreError>

Source

fn find_by_doi(&self, doi: &str) -> Result<Option<Paper>, CoreError>

Source

fn find_by_title(&self, title: &str) -> Result<Option<Paper>, CoreError>

Source

fn list_all(&self, limit: i64, offset: i64) -> Result<Vec<Paper>, CoreError>

Implementors§