mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 15:15:36 +01:00
Fix random handlers
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
|||||||
.vscode
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
.ruff_cache
|
||||||
|
|
||||||
__pycache__
|
__pycache__
|
||||||
|
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ class GetRandomService(Generic[MODEL, QUERY], BaseService[MODEL, QUERY]):
|
|||||||
cls,
|
cls,
|
||||||
query: QUERY,
|
query: QUERY,
|
||||||
redis: aioredis.Redis,
|
redis: aioredis.Redis,
|
||||||
) -> int:
|
) -> int | None:
|
||||||
cached_object_id = await cls._get_random_object_from_cache(query, redis)
|
cached_object_id = await cls._get_random_object_from_cache(query, redis)
|
||||||
|
|
||||||
if cached_object_id is not None:
|
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)
|
await cls.cache_object_ids(query, object_ids, redis)
|
||||||
|
|
||||||
|
if len(object_ids):
|
||||||
|
return None
|
||||||
|
|
||||||
return choice(object_ids)
|
return choice(object_ids)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ async def get_random_author(
|
|||||||
{"allowed_langs": allowed_langs}, request.app.state.redis
|
{"allowed_langs": allowed_langs}, request.app.state.redis
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if author_id is None:
|
||||||
|
raise HTTPException(status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
await AuthorDB.objects.select_related(SELECT_RELATED_FIELDS)
|
await AuthorDB.objects.select_related(SELECT_RELATED_FIELDS)
|
||||||
.prefetch_related(PREFETCH_RELATED_FIELDS)
|
.prefetch_related(PREFETCH_RELATED_FIELDS)
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ async def get_random_book(
|
|||||||
{"allowed_langs": allowed_langs, "genre": genre}, request.app.state.redis
|
{"allowed_langs": allowed_langs, "genre": genre}, request.app.state.redis
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if book_id is None:
|
||||||
|
raise HTTPException(status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
book = (
|
book = (
|
||||||
await BookDB.objects.select_related(
|
await BookDB.objects.select_related(
|
||||||
SELECT_RELATED_FIELDS + DETAIL_SELECT_RELATED_FIELDS
|
SELECT_RELATED_FIELDS + DETAIL_SELECT_RELATED_FIELDS
|
||||||
|
|||||||
@@ -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 import Params
|
||||||
from fastapi_pagination.ext.ormar import paginate
|
from fastapi_pagination.ext.ormar import paginate
|
||||||
@@ -34,6 +34,9 @@ async def get_random_sequence(
|
|||||||
request.app.state.redis,
|
request.app.state.redis,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if sequence_id is None:
|
||||||
|
raise HTTPException(status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
return await SequenceDB.objects.get(id=sequence_id)
|
return await SequenceDB.objects.get(id=sequence_id)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user