1
0
Fork 0
mirror of https://github.com/Findus23/PaperLibrary-cli.git synced 2024-09-20 17:03:46 +02:00
PaperLibrary-cli/paperlibrary/api/models.py

53 lines
985 B
Python
Raw Normal View History

2020-10-14 21:38:36 +02:00
from dataclasses import dataclass, field
from datetime import datetime
from typing import Optional, List
2020-10-19 17:43:08 +02:00
from dataclasses_json import DataClassJsonMixin, config
2020-10-14 21:38:36 +02:00
from marshmallow import fields
@dataclass
class PDF(DataClassJsonMixin):
id: int
file: str
sha265: str
type: str
preview: str
updated_at: datetime = field(
metadata=config(
encoder=datetime.isoformat,
decoder=datetime.fromisoformat,
mm_field=fields.DateTime(format='iso')
)
)
@dataclass
class Paper(DataClassJsonMixin):
id: int
url: str
title: str
pdfs: List[PDF]
doi: str
@property
def main_pdf(self) -> PDF:
return self.pdfs[0]
@dataclass
class Author(DataClassJsonMixin):
url: str
papers: List[Paper]
name: str
affiliation: Optional[str]
orcid_id: Optional[str]
2020-10-19 17:43:08 +02:00
@dataclass
class Keyword(DataClassJsonMixin):
url: str
papers: List[Paper]
name: str
schema: str