🎨 Make Model.Schema callable with readonly arg
This commit is contained in:
parent
29a5018ae3
commit
c56ea6451e
5 changed files with 29 additions and 22 deletions
16
README.md
16
README.md
|
|
@ -125,6 +125,8 @@ Next, create your endpoints in `tournament/routes.py`:
|
|||
from ohmyapi.router import APIRouter, HTTPException, HTTPStatus
|
||||
from ohmyapi.db.exceptions import DoesNotExist
|
||||
|
||||
from typing import List
|
||||
|
||||
from .models import Tournament
|
||||
|
||||
# OhMyAPI will automatically pick up all instances of `fastapi.APIRouter` and
|
||||
|
|
@ -137,23 +139,23 @@ from .models import Tournament
|
|||
tournament_router = APIRouter(prefix="/tournament", tags=['Tournament'])
|
||||
|
||||
|
||||
@tournament_router.get("/")
|
||||
@tournament_router.get("/", response_model=List[Tournament.Schema()])
|
||||
async def list():
|
||||
queryset = Tournament.all()
|
||||
return await Tournament.Schema.model.from_queryset(queryset)
|
||||
|
||||
|
||||
@tournament_router.post("/", status_code=HTTPStatus.CREATED)
|
||||
async def post(tournament: Tournament.Schema.readonly):
|
||||
async def post(tournament: Tournament.Schema(readonly=True)):
|
||||
queryset = Tournament.create(**payload.model_dump())
|
||||
return await Tournament.Schema.model.from_queryset(queryset)
|
||||
return await Tournament.Schema().from_queryset(queryset)
|
||||
|
||||
|
||||
@tournament_router.get("/:id")
|
||||
@tournament_router.get("/:id", response_model=Tournament.Schema())
|
||||
async def get(id: str):
|
||||
try:
|
||||
queryset = Tournament.get(id=id)
|
||||
return await Tournament.Schema.model.from_queryset_single(tournament)
|
||||
return await Tournament.Schema().from_queryset_single(tournament)
|
||||
except DoesNotExist:
|
||||
raise HTTPException(status_code=404, detail="not found")
|
||||
|
||||
|
|
@ -273,7 +275,7 @@ router = APIRouter(prefix="/tournament", tags=["Tournament"])
|
|||
@router.get("/")
|
||||
async def list(user: auth.User = Depends(permissions.require_authenticated)):
|
||||
queryset = Tournament.all()
|
||||
return await Tournament.Schema.model.from_queryset(queryset)
|
||||
return await Tournament.Schema().from_queryset(queryset)
|
||||
|
||||
|
||||
...
|
||||
|
|
@ -315,7 +317,7 @@ router = APIRouter(prefix="/tournament", tags=["Tournament"])
|
|||
@router.get("/teams")
|
||||
async def teams(user: auth.User = Depends(permissions.require_authenticated)):
|
||||
queryset = Team.for_user(user)
|
||||
return await Tournament.Schema.model.from_queryset(queryset)
|
||||
return await Tournament.Schema().from_queryset(queryset)
|
||||
```
|
||||
|
||||
## Shell
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue