diff --git a/app/api/ingest.py b/app/api/ingest.py index 6c59f91..e98e11f 100644 --- a/app/api/ingest.py +++ b/app/api/ingest.py @@ -10,14 +10,22 @@ @router.post("/ingest_dois") async def ingest_dois( - file: UploadFile, limit: int=50, update_metadata: bool=False + file: UploadFile, + limit: int = 50, + update_metadata: bool = False, + write_metadata: bool = False, ) -> Tuple[IngestionMetrics, IngestionStates]: try: content = await file.read() dois = [line.strip() for line in content.decode().split("\n") if line.strip()] if not dois: raise HTTPException(status_code=400, detail="No valid DOIs found in file") - ingest = Ingest(dois=dois, limit=limit, update_metadata=update_metadata) + ingest = Ingest( + dois=dois, + limit=limit, + update_metadata=update_metadata, + write_metadata=write_metadata, + ) return ingest.ingest_dois() except UnicodeDecodeError: raise HTTPException(status_code=400, detail="File must be UTF-8 encoded text") diff --git a/app/crud/ingest.py b/app/crud/ingest.py index 1f41846..2dfa1f8 100644 --- a/app/crud/ingest.py +++ b/app/crud/ingest.py @@ -6,16 +6,24 @@ class Ingest: def __init__( - self, dois: list, limit: int, update_metadata: bool + self, + dois: list, + limit: int, + update_metadata: bool, + write_metadata: bool, ) -> Tuple[IngestionMetrics, IngestionStates]: self.dois = dois self.limit = limit self.update_metadata = update_metadata + self.write_metadata = write_metadata def ingest_dois(self): try: doi_manager = main( - self.dois, limit=self.limit, update_metadata=self.update_metadata + self.dois, + limit=self.limit, + update_metadata=self.update_metadata, + write_metadata=self.write_metadata, ) except Exception as e: print(f"Error ingesting dois: {e}") diff --git a/app/schemas/ingest.py b/app/schemas/ingest.py index 2a3f157..b08580d 100644 --- a/app/schemas/ingest.py +++ b/app/schemas/ingest.py @@ -5,6 +5,7 @@ class IngestionMetrics(BaseModel): submitted_dois: int + duplicated_submissions: int processed_dois: int new_dois: int existing_dois: int @@ -21,6 +22,7 @@ class IngestionMetrics(BaseModel): class IngestionStates(BaseModel): submitted_dois: List[str] + duplicated_submissions: List[str] processed_dois: List[str] new_dois: List[str] existing_dois: List[str]