Fix random handlers

This commit is contained in:
2023-05-06 18:47:26 +02:00
parent 1f4422a9cd
commit 183351ed68
5 changed files with 15 additions and 2 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
.vscode
.idea
.ruff_cache
__pycache__

View File

@@ -315,7 +315,7 @@ class GetRandomService(Generic[MODEL, QUERY], BaseService[MODEL, QUERY]):
cls,
query: QUERY,
redis: aioredis.Redis,
) -> int:
) -> int | None:
cached_object_id = await cls._get_random_object_from_cache(query, redis)
if cached_object_id is not None:
@@ -325,6 +325,9 @@ class GetRandomService(Generic[MODEL, QUERY], BaseService[MODEL, QUERY]):
await cls.cache_object_ids(query, object_ids, redis)
if len(object_ids):
return None
return choice(object_ids)

View File

@@ -43,6 +43,9 @@ async def get_random_author(
{"allowed_langs": allowed_langs}, request.app.state.redis
)
if author_id is None:
raise HTTPException(status.HTTP_204_NO_CONTENT)
return (
await AuthorDB.objects.select_related(SELECT_RELATED_FIELDS)
.prefetch_related(PREFETCH_RELATED_FIELDS)

View File

@@ -64,6 +64,9 @@ async def get_random_book(
{"allowed_langs": allowed_langs, "genre": genre}, request.app.state.redis
)
if book_id is None:
raise HTTPException(status.HTTP_204_NO_CONTENT)
book = (
await BookDB.objects.select_related(
SELECT_RELATED_FIELDS + DETAIL_SELECT_RELATED_FIELDS

View File

@@ -1,4 +1,4 @@
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi_pagination import Params
from fastapi_pagination.ext.ormar import paginate
@@ -34,6 +34,9 @@ async def get_random_sequence(
request.app.state.redis,
)
if sequence_id is None:
raise HTTPException(status.HTTP_204_NO_CONTENT)
return await SequenceDB.objects.get(id=sequence_id)