Use orjson in serializers

This commit is contained in:
2021-11-21 14:45:03 +03:00
parent 9a8b1265cf
commit ef26b979d4
9 changed files with 124 additions and 1 deletions

View File

@@ -1,8 +1,9 @@
from typing import Optional from typing import Optional
from datetime import date
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class Author(BaseModel): class Author(BaseModel):
id: int id: int
@@ -11,6 +12,9 @@ class Author(BaseModel):
last_name: str last_name: str
middle_name: Optional[str] middle_name: Optional[str]
class Config(ORJSONConfig):
pass
class CreateAuthor(BaseModel): class CreateAuthor(BaseModel):
source: int source: int
@@ -20,12 +24,18 @@ class CreateAuthor(BaseModel):
last_name: str last_name: str
middle_name: Optional[str] middle_name: Optional[str]
class Config(ORJSONConfig):
pass
class UpdateAuthor(BaseModel): class UpdateAuthor(BaseModel):
first_name: str first_name: str
last_name: str last_name: str
middle_name: Optional[str] middle_name: Optional[str]
class Config(ORJSONConfig):
pass
class AuthorBook(BaseModel): class AuthorBook(BaseModel):
id: int id: int
@@ -33,11 +43,17 @@ class AuthorBook(BaseModel):
lang: str lang: str
file_type: str file_type: str
class Config(ORJSONConfig):
pass
class Translation(BaseModel): class Translation(BaseModel):
translator: Author translator: Author
position: int position: int
class Config(ORJSONConfig):
pass
class TranslatedBook(BaseModel): class TranslatedBook(BaseModel):
id: int id: int
@@ -46,3 +62,6 @@ class TranslatedBook(BaseModel):
file_type: str file_type: str
authors: list[Author] authors: list[Author]
translations: list[Translation] translations: list[Translation]
class Config(ORJSONConfig):
pass

View File

@@ -2,6 +2,8 @@ from typing import Optional
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class AuthorAnnotation(BaseModel): class AuthorAnnotation(BaseModel):
id: int id: int
@@ -9,6 +11,9 @@ class AuthorAnnotation(BaseModel):
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass
class CreateAuthorAnnotation(BaseModel): class CreateAuthorAnnotation(BaseModel):
author: int author: int
@@ -16,8 +21,14 @@ class CreateAuthorAnnotation(BaseModel):
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass
class UpdateAuthorAnnotation(BaseModel): class UpdateAuthorAnnotation(BaseModel):
title: str title: str
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass

View File

@@ -3,6 +3,7 @@ from datetime import date
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.author import Author from app.serializers.author import Author
from app.serializers.orjson_config import ORJSONConfig
class Book(BaseModel): class Book(BaseModel):
@@ -14,6 +15,9 @@ class Book(BaseModel):
uploaded: date uploaded: date
authors: list[Author] authors: list[Author]
class Config(ORJSONConfig):
pass
class CreateBook(BaseModel): class CreateBook(BaseModel):
source: int source: int
@@ -24,6 +28,9 @@ class CreateBook(BaseModel):
uploaded: date uploaded: date
authors: list[int] authors: list[int]
class Config(ORJSONConfig):
pass
class UpdateBook(BaseModel): class UpdateBook(BaseModel):
title: str title: str
@@ -32,6 +39,9 @@ class UpdateBook(BaseModel):
uploaded: date uploaded: date
authors: list[int] authors: list[int]
class Config(ORJSONConfig):
pass
class CreateRemoteBook(BaseModel): class CreateRemoteBook(BaseModel):
source: int source: int
@@ -41,3 +51,6 @@ class CreateRemoteBook(BaseModel):
file_type: str file_type: str
uploaded: date uploaded: date
remote_authors: list[int] remote_authors: list[int]
class Config(ORJSONConfig):
pass

View File

@@ -2,6 +2,8 @@ from typing import Optional
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class BookAnnotation(BaseModel): class BookAnnotation(BaseModel):
id: int id: int
@@ -9,6 +11,9 @@ class BookAnnotation(BaseModel):
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass
class CreateBookAnnotation(BaseModel): class CreateBookAnnotation(BaseModel):
id: int id: int
@@ -16,9 +21,15 @@ class CreateBookAnnotation(BaseModel):
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass
class UpdateBookAnnotation(BaseModel): class UpdateBookAnnotation(BaseModel):
id: int id: int
title: str title: str
text: str text: str
file: Optional[str] file: Optional[str]
class Config(ORJSONConfig):
pass

View File

@@ -0,0 +1,10 @@
import orjson
def orjson_dumps(v, *, default):
return orjson.dumps(v, default=default).decode()
class ORJSONConfig:
json_loads = orjson.loads
json_dumps = orjson_dumps

View File

@@ -1,12 +1,20 @@
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class Sequence(BaseModel): class Sequence(BaseModel):
id: int id: int
name: str name: str
class Config(ORJSONConfig):
pass
class CreateSequence(BaseModel): class CreateSequence(BaseModel):
source: int source: int
remote_id: int remote_id: int
name: str name: str
class Config(ORJSONConfig):
pass

View File

@@ -1,5 +1,7 @@
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class SequenceBookAuthor(BaseModel): class SequenceBookAuthor(BaseModel):
id: int id: int
@@ -7,6 +9,9 @@ class SequenceBookAuthor(BaseModel):
last_name: str last_name: str
middle_name: str middle_name: str
class Config(ORJSONConfig):
pass
class SeqTranslationTranslator(BaseModel): class SeqTranslationTranslator(BaseModel):
id: int id: int
@@ -14,11 +19,17 @@ class SeqTranslationTranslator(BaseModel):
last_name: str last_name: str
middle_name: str middle_name: str
class Config(ORJSONConfig):
pass
class SequenceBookTranslation(BaseModel): class SequenceBookTranslation(BaseModel):
id: int id: int
translator: SeqTranslationTranslator translator: SeqTranslationTranslator
class Config(ORJSONConfig):
pass
class SequenceBook(BaseModel): class SequenceBook(BaseModel):
id: int id: int
@@ -28,11 +39,17 @@ class SequenceBook(BaseModel):
authors: SequenceBookAuthor authors: SequenceBookAuthor
translation: SequenceBookTranslation translation: SequenceBookTranslation
class Config(ORJSONConfig):
pass
class Sequence(BaseModel): class Sequence(BaseModel):
id: int id: int
name: str name: str
class Config(ORJSONConfig):
pass
class SequenceInfo(BaseModel): class SequenceInfo(BaseModel):
id: int id: int
@@ -40,15 +57,24 @@ class SequenceInfo(BaseModel):
sequence: Sequence sequence: Sequence
position: int position: int
class Config(ORJSONConfig):
pass
class CreateSequenceInfo(BaseModel): class CreateSequenceInfo(BaseModel):
book: int book: int
sequence: int sequence: int
position: int position: int
class Config(ORJSONConfig):
pass
class CreateRemoteSequenceInfo(BaseModel): class CreateRemoteSequenceInfo(BaseModel):
source: int source: int
remote_book: int remote_book: int
remote_sequence: int remote_sequence: int
position: int position: int
class Config(ORJSONConfig):
pass

View File

@@ -1,10 +1,18 @@
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class Source(BaseModel): class Source(BaseModel):
id: int id: int
name: str name: str
class Config(ORJSONConfig):
pass
class CreateSource(BaseModel): class CreateSource(BaseModel):
name: str name: str
class Config(ORJSONConfig):
pass

View File

@@ -1,5 +1,7 @@
from pydantic import BaseModel from pydantic import BaseModel
from app.serializers.orjson_config import ORJSONConfig
class TranslationBook(BaseModel): class TranslationBook(BaseModel):
id: int id: int
@@ -7,6 +9,9 @@ class TranslationBook(BaseModel):
lang: str lang: str
file_type: str file_type: str
class Config(ORJSONConfig):
pass
class TranslationTranslator(BaseModel): class TranslationTranslator(BaseModel):
id: int id: int
@@ -14,21 +19,33 @@ class TranslationTranslator(BaseModel):
last_name: str last_name: str
middle_name: str middle_name: str
class Config(ORJSONConfig):
pass
class Translation(BaseModel): class Translation(BaseModel):
book: TranslationBook book: TranslationBook
translator: TranslationTranslator translator: TranslationTranslator
position: int position: int
class Config(ORJSONConfig):
pass
class CreateTranslation(BaseModel): class CreateTranslation(BaseModel):
book: int book: int
translator: int translator: int
position: int position: int
class Config(ORJSONConfig):
pass
class CreateRemoteTranslation(BaseModel): class CreateRemoteTranslation(BaseModel):
source: int source: int
remote_book: int remote_book: int
remote_translator: int remote_translator: int
position: int position: int
class Config(ORJSONConfig):
pass