Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions app/api/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
12 changes: 10 additions & 2 deletions app/crud/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down
2 changes: 2 additions & 0 deletions app/schemas/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

class IngestionMetrics(BaseModel):
submitted_dois: int
duplicated_submissions: int
processed_dois: int
new_dois: int
existing_dois: int
Expand All @@ -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]
Expand Down