mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2026-03-03 15:10:51 +01:00
Refactoring
This commit is contained in:
@@ -9,7 +9,6 @@ from app.views.book_annotation import book_annotation_router
|
||||
from app.views.translation import translation_router
|
||||
|
||||
from app.views.sequence import sequence_router
|
||||
from app.views.sequence_info import sequence_info_router
|
||||
|
||||
|
||||
routers = [
|
||||
@@ -20,5 +19,4 @@ routers = [
|
||||
book_annotation_router,
|
||||
translation_router,
|
||||
sequence_router,
|
||||
sequence_info_router,
|
||||
]
|
||||
|
||||
@@ -4,8 +4,8 @@ from fastapi_pagination import Params
|
||||
from fastapi_pagination.ext.ormar import paginate
|
||||
from app.utils.pagination import CustomPage
|
||||
|
||||
from app.models import Sequence as SequenceDB
|
||||
from app.serializers.sequence import Sequence, CreateSequence
|
||||
from app.models import Sequence as SequenceDB, Book as BookDB, BookSequences as BookSequencesDB
|
||||
from app.serializers.sequence import Sequence, CreateSequence, Book as SequenceBook
|
||||
from app.services.sequence import SequenceTGRMSearchService
|
||||
from app.depends import check_token
|
||||
|
||||
@@ -29,6 +29,14 @@ async def get_sequence(id: int):
|
||||
return await SequenceDB.objects.get(id=id)
|
||||
|
||||
|
||||
@sequence_router.get("/{id}/books", response_model=CustomPage[SequenceBook], dependencies=[Depends(Params)])
|
||||
async def get_sequence_books(id: int):
|
||||
return await paginate(
|
||||
BookDB.objects.select_related(["source", "annotations", "authors"])
|
||||
.filter(sequences__id=id).order_by("sequences__booksequences__position")
|
||||
)
|
||||
|
||||
|
||||
@sequence_router.post("/", response_model=Sequence)
|
||||
async def create_sequence(data: CreateSequence):
|
||||
return await SequenceDB.objects.create(
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
from typing import Union
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
|
||||
from fastapi_pagination import Params
|
||||
from fastapi_pagination.ext.ormar import paginate
|
||||
from app.utils.pagination import CustomPage
|
||||
|
||||
from app.models import Sequence as SequenceInfoDB
|
||||
from app.serializers.sequence_info import SequenceInfo, CreateSequenceInfo, CreateRemoteSequenceInfo
|
||||
from app.services.sequence_info import SequenceInfoCreator
|
||||
from app.depends import check_token
|
||||
|
||||
|
||||
sequence_info_router = APIRouter(
|
||||
prefix="/api/v1/sequence_info",
|
||||
tags=["sequence_info"],
|
||||
dependencies=[Depends(check_token)],
|
||||
)
|
||||
|
||||
|
||||
@sequence_info_router.get("/", response_model=CustomPage[SequenceInfo], dependencies=[Depends(Params)])
|
||||
async def get_sequence_infos():
|
||||
return await paginate(
|
||||
SequenceInfoDB.objects.prefetch_related(["book", "sequence"])
|
||||
.select_related(["book__authors", "book__translations", "book__translations__translator"])
|
||||
)
|
||||
|
||||
|
||||
@sequence_info_router.get("/{id}", response_model=SequenceInfo)
|
||||
async def get_sequence_info(id: int):
|
||||
sequence_info = await SequenceInfoDB.objects.prefetch_related(["book", "sequence"]) \
|
||||
.select_related(["book__authors", "book__translations", "book__translations__translator"]) \
|
||||
.get_or_none(id=id)
|
||||
|
||||
if sequence_info is None:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND)
|
||||
|
||||
return sequence_info
|
||||
|
||||
|
||||
@sequence_info_router.post("/", response_model=SequenceInfo)
|
||||
async def create_sequence_info(data: Union[CreateSequenceInfo, CreateRemoteSequenceInfo]):
|
||||
sequence_info = await SequenceInfoCreator.create(data)
|
||||
|
||||
return await SequenceInfoDB.objects.prefetch_related(["book", "sequence"]) \
|
||||
.select_related(["book__authors", "book__translations", "book__translations__translator"]) \
|
||||
.get(id=sequence_info.id)
|
||||
Reference in New Issue
Block a user