Update random objects getter

This commit is contained in:
2022-01-01 12:37:22 +03:00
parent a58136c5c2
commit 4a78d4f987
7 changed files with 49 additions and 15 deletions

View File

@@ -9,7 +9,7 @@ from app.utils.pagination import CustomPage
from app.models import Author as AuthorDB, AuthorAnnotation as AuthorAnnotationDB, Book as BookDB
from app.serializers.author import Author, CreateAuthor, UpdateAuthor, AuthorBook, TranslatedBook
from app.serializers.author_annotation import AuthorAnnotation
from app.services.author import AuthorTGRMSearchService
from app.services.author import AuthorTGRMSearchService, GetRandomAuthorService
from app.depends import check_token
@@ -42,9 +42,7 @@ async def create_author(data: CreateAuthor):
@author_router.get("/random", response_model=Author)
async def get_random_author():
author_ids: list[int] = await AuthorDB.objects.values_list("id", flatten=True)
author_id = random_choice(author_ids)
author_id = await GetRandomAuthorService.get_random_id()
return await AuthorDB.objects.prefetch_related(PREFETCH_RELATED).get(id=author_id)

View File

@@ -10,7 +10,7 @@ from app.utils.pagination import CustomPage
from app.models import Book as BookDB, Author as AuthorDB, BookAnnotation as BookAnnotationDB
from app.serializers.book import Book, RemoteBook, BookDetail, CreateBook, UpdateBook, CreateRemoteBook
from app.serializers.book_annotation import BookAnnotation
from app.services.book import BookTGRMSearchService, BookCreator
from app.services.book import BookTGRMSearchService, GetRandomBookService, BookCreator
from app.filters.book import get_book_filter
from app.depends import check_token
@@ -41,9 +41,7 @@ async def create_book(data: Union[CreateBook, CreateRemoteBook]):
@book_router.get("/random", response_model=BookDetail)
async def get_random_book():
book_ids: list[int] = await BookDB.objects.filter(is_deleted=False).values_list("id", flatten=True)
book_id = random_choice(book_ids)
book_id = await GetRandomBookService.get_random_id()
return await BookDB.objects.select_related(SELECT_RELATED_FIELDS).get(id=book_id)

View File

@@ -8,7 +8,7 @@ from app.utils.pagination import CustomPage
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.services.sequence import SequenceTGRMSearchService, GetRandomSequenceService
from app.depends import check_token
@@ -28,9 +28,7 @@ async def get_sequences():
@sequence_router.get("/random", response_model=Sequence)
async def get_random_sequence():
sequence_ids: list[int] = await SequenceDB.objects.values_list("id", flatten=True)
sequence_id = random_choice(sequence_ids)
sequence_id = await GetRandomSequenceService.get_random_id()
return await SequenceDB.objects.get(id=sequence_id)