| from typing import Optional
|
| from pydantic import BaseModel
|
| from datetime import datetime
|
|
|
|
|
| class PaperCreate(BaseModel):
|
| title: str
|
| abstract: str
|
| authors: str
|
| arxiv_id: Optional[str] = None
|
| pdf_url: Optional[str] = None
|
| paper_url: Optional[str] = None
|
| github_url: Optional[str] = None
|
| topics: Optional[str] = None
|
| published_date: Optional[str] = None
|
| institution: Optional[str] = None
|
| date_published: Optional[str] = None
|
| thumbnail_url: Optional[str] = None
|
| paper_source: Optional[str] = "arxiv"
|
|
|
|
|
| class PaperUploadMetadata(BaseModel):
|
| """Metadata for uploaded PDF papers (non-arxiv)"""
|
|
|
| title: str
|
| abstract: str
|
| authors: str
|
|
|
| github_url: Optional[str] = None
|
| topics: Optional[str] = None
|
| published_date: Optional[str] = None
|
| institution: Optional[str] = None
|
| date_published: Optional[str] = None
|
|
|
|
|
| class PaperResponse(BaseModel):
|
| id: int
|
| user_id: int
|
| title: str
|
| abstract: str
|
| authors: str
|
| arxiv_id: Optional[str] = None
|
| pdf_url: Optional[str] = None
|
| paper_url: Optional[str] = None
|
| github_url: Optional[str] = None
|
| topics: Optional[str] = None
|
| published_date: Optional[str] = None
|
| thumbnail_url: Optional[str] = None
|
| institution: Optional[str] = None
|
| date_published: Optional[str] = None
|
| created_at: datetime
|
| ingested: bool
|
| paper_summary: Optional[str] = None
|
| paper_source: Optional[str] = "arxiv"
|
| keywords: Optional[str] = None
|
|
|
|
|
| class BulkDeletePapers(BaseModel):
|
| paper_ids: list[int]
|
|
|
|
|
| class RecommendationRequest(BaseModel):
|
| title: str
|
| abstract: str
|
| authors: str
|
| primary_category: Optional[str] = None
|
| arxiv_id: Optional[str] = None
|
|
|
|
|
| class RecommendationItem(BaseModel):
|
| arxiv_id: Optional[str] = None
|
| title: Optional[str] = None
|
| abstract: Optional[str] = None
|
| authors: Optional[str] = None
|
| categories: Optional[str] = None
|
| primary_category: Optional[str] = None
|
| published_date: Optional[str] = None
|
| paper_url: Optional[str] = None
|
| pdf_url: Optional[str] = None
|
| score: Optional[float] = None
|
| final_score: Optional[float] = None
|
|
|
|
|
| class RecommendationsResponse(BaseModel):
|
| similar_papers: list[RecommendationItem] = []
|
| on_this_topic: list[RecommendationItem] = []
|
| from_these_authors: list[RecommendationItem] = []
|
|
|