mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 15:15:36 +01:00
Add random endpoints
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from typing import Union
|
||||
from random import choice as random_choice
|
||||
|
||||
from fastapi import APIRouter, Depends, Request, HTTPException, status
|
||||
|
||||
@@ -38,6 +39,15 @@ async def create_book(data: Union[CreateBook, CreateRemoteBook]):
|
||||
return await BookDB.objects.select_related(SELECT_RELATED_FIELDS).get(id=book.id)
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
return await BookDB.objects.select_related(SELECT_RELATED_FIELDS).get(id=book_id)
|
||||
|
||||
|
||||
@book_router.get("/{id}", response_model=BookDetail)
|
||||
async def get_book(id: int):
|
||||
book = await BookDB.objects.select_related(SELECT_RELATED_FIELDS).get_or_none(id=id)
|
||||
|
||||
Reference in New Issue
Block a user