Use Annotated

This commit is contained in:
2023-05-14 01:46:35 +02:00
parent 183351ed68
commit 4dfc2b18e8
4 changed files with 21 additions and 15 deletions

View File

@@ -1,3 +1,5 @@
from typing import Annotated
from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi_pagination import Params from fastapi_pagination import Params
@@ -37,7 +39,7 @@ async def get_authors():
@author_router.get("/random", response_model=Author) @author_router.get("/random", response_model=Author)
async def get_random_author( async def get_random_author(
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
author_id = await GetRandomAuthorService.get_random_id( author_id = await GetRandomAuthorService.get_random_id(
{"allowed_langs": allowed_langs}, request.app.state.redis {"allowed_langs": allowed_langs}, request.app.state.redis
@@ -81,7 +83,7 @@ async def get_author_annotation(id: int):
"/{id}/books", response_model=Page[AuthorBook], dependencies=[Depends(Params)] "/{id}/books", response_model=Page[AuthorBook], dependencies=[Depends(Params)]
) )
async def get_author_books( async def get_author_books(
id: int, allowed_langs: list[str] = Depends(get_allowed_langs) id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)]
): ):
return await paginate( return await paginate(
BookDB.objects.prefetch_related(["source"]) BookDB.objects.prefetch_related(["source"])
@@ -97,7 +99,7 @@ async def get_author_books(
async def search_authors( async def search_authors(
query: str, query: str,
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
return await AuthorMeiliSearchService.get( return await AuthorMeiliSearchService.get(
{"query": query, "allowed_langs": allowed_langs}, {"query": query, "allowed_langs": allowed_langs},
@@ -114,7 +116,7 @@ translator_router = APIRouter(
@translator_router.get("/{id}/books", response_model=Page[TranslatedBook]) @translator_router.get("/{id}/books", response_model=Page[TranslatedBook])
async def get_translated_books( async def get_translated_books(
id: int, allowed_langs: list[str] = Depends(get_allowed_langs) id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)]
): ):
return await paginate( return await paginate(
BookDB.objects.prefetch_related(["source"]) BookDB.objects.prefetch_related(["source"])
@@ -133,7 +135,7 @@ async def get_translated_books(
async def search_translators( async def search_translators(
query: str, query: str,
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
return await TranslatorMeiliSearchService.get( return await TranslatorMeiliSearchService.get(
{"query": query, "allowed_langs": allowed_langs}, {"query": query, "allowed_langs": allowed_langs},

View File

@@ -1,4 +1,4 @@
from typing import Optional from typing import Annotated, Optional
from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi import APIRouter, Depends, HTTPException, Request, status
@@ -34,7 +34,7 @@ DETAIL_SELECT_RELATED_FIELDS = ["sequences", "genres"]
@book_router.get("/", response_model=Page[RemoteBook], dependencies=[Depends(Params)]) @book_router.get("/", response_model=Page[RemoteBook], dependencies=[Depends(Params)])
async def get_books( async def get_books(
request: Request, request: Request,
book_filter: dict = Depends(get_book_filter), book_filter: Annotated[dict, Depends(get_book_filter)],
): ):
return await BookFilterService.get(book_filter, request.app.state.redis) return await BookFilterService.get(book_filter, request.app.state.redis)
@@ -43,7 +43,7 @@ async def get_books(
"/base/", response_model=Page[BookBaseInfo], dependencies=[Depends(Params)] "/base/", response_model=Page[BookBaseInfo], dependencies=[Depends(Params)]
) )
async def get_base_books_info( async def get_base_books_info(
request: Request, book_filter: dict = Depends(get_book_filter) request: Request, book_filter: Annotated[dict, Depends(get_book_filter)]
): ):
return await BookBaseInfoFilterService.get(book_filter, request.app.state.redis) return await BookBaseInfoFilterService.get(book_filter, request.app.state.redis)
@@ -57,7 +57,7 @@ async def get_last_book_id():
@book_router.get("/random", response_model=BookDetail) @book_router.get("/random", response_model=BookDetail)
async def get_random_book( async def get_random_book(
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
genre: Optional[int] = None, genre: Optional[int] = None,
): ):
book_id = await GetRandomBookService.get_random_id( book_id = await GetRandomBookService.get_random_id(
@@ -124,7 +124,7 @@ async def get_book_annotation(id: int):
async def search_books( async def search_books(
query: str, query: str,
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
return await BookMeiliSearchService.get( return await BookMeiliSearchService.get(
{"query": query, "allowed_langs": allowed_langs}, {"query": query, "allowed_langs": allowed_langs},

View File

@@ -1,3 +1,5 @@
from typing import Annotated
from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi_pagination import Params from fastapi_pagination import Params
@@ -20,7 +22,7 @@ PREFETCH_RELATED_FIELDS = ["source"]
@genre_router.get("/", response_model=Page[Genre], dependencies=[Depends(Params)]) @genre_router.get("/", response_model=Page[Genre], dependencies=[Depends(Params)])
async def get_genres(genre_filter: dict = Depends(get_genre_filter)): async def get_genres(genre_filter: Annotated[dict, Depends(get_genre_filter)]):
return await paginate( return await paginate(
GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS) GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS)
.filter(**genre_filter) .filter(**genre_filter)
@@ -53,7 +55,7 @@ async def get_genre(id: int):
async def search_genres( async def search_genres(
query: str, query: str,
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
return await GenreMeiliSearchService.get( return await GenreMeiliSearchService.get(
{"query": query, "allowed_langs": allowed_langs}, {"query": query, "allowed_langs": allowed_langs},

View File

@@ -1,3 +1,5 @@
from typing import Annotated
from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi_pagination import Params from fastapi_pagination import Params
@@ -27,7 +29,7 @@ async def get_sequences():
@sequence_router.get("/random", response_model=Sequence) @sequence_router.get("/random", response_model=Sequence)
async def get_random_sequence( async def get_random_sequence(
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
sequence_id = await GetRandomSequenceService.get_random_id( sequence_id = await GetRandomSequenceService.get_random_id(
{"allowed_langs": allowed_langs}, {"allowed_langs": allowed_langs},
@@ -51,7 +53,7 @@ async def get_sequence(id: int):
dependencies=[Depends(Params)], dependencies=[Depends(Params)],
) )
async def get_sequence_books( async def get_sequence_books(
id: int, allowed_langs: list[str] = Depends(get_allowed_langs) id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)]
): ):
return await paginate( return await paginate(
BookDB.objects.prefetch_related(["source"]) BookDB.objects.prefetch_related(["source"])
@@ -69,7 +71,7 @@ async def get_sequence_books(
async def search_sequences( async def search_sequences(
query: str, query: str,
request: Request, request: Request,
allowed_langs: frozenset[str] = Depends(get_allowed_langs), allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)],
): ):
return await SequenceMeiliSearchService.get( return await SequenceMeiliSearchService.get(
{"query": query, "allowed_langs": allowed_langs}, {"query": query, "allowed_langs": allowed_langs},