mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 07:05:36 +01:00
Use orjson in serializers
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
10
fastapi_book_server/app/serializers/orjson_config.py
Normal file
10
fastapi_book_server/app/serializers/orjson_config.py
Normal 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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user