增删改查

  1. from typing import List, Any, Union
  2. from fastapi import APIRouter, Depends
  3. from core import deps
  4. from models import Movie
  5. from scheams import Movie_Pydantic, MovieIn_Pydantic, Response200, Response400
  6. movie = APIRouter(tags=["电影相关"])
  7. @movie.get("/movie", summary="电影列表", response_model=Union[Response200, Response400])
  8. async def movie_list(limit: int = 10, page: int = 1):
  9. skip = (page - 1) * limit
  10. data = {
  11. "total": await Movie.all().count(),
  12. "movies": await Movie_Pydantic.from_queryset(Movie.all().offset(skip).limit(limit).order_by('-id'))
  13. }
  14. return Response200(data=data)
  15. @movie.post("/movie", summary="新增电影")
  16. async def movie_create(movie_form: MovieIn_Pydantic, token: Any = Depends(deps.get_current_user)):
  17. return Response200(data=await Movie_Pydantic.from_tortoise_orm(await Movie.create(**movie_form.dict())))
  18. @movie.put("/movie/{pk}", summary="编辑电影")
  19. async def movie_update(pk: int, movie_form: MovieIn_Pydantic, token: Any = Depends(deps.get_current_user)):
  20. if await Movie.filter(pk=pk).update(**movie_form.dict()):
  21. return Response200()
  22. return Response400(msg="更新失败")
  23. @movie.delete("/movie/{pk}", summary="删除电影")
  24. async def movie_delete(pk: int, token: Any = Depends(deps.get_current_user)):
  25. if await Movie.filter(pk=pk).delete():
  26. return Response200()
  27. return Response400(msg="删除失败")
  1. from tortoise import models
  2. from tortoise import fields
  3. class Movie(models.Model):
  4. name = fields.CharField(max_length=50, null=False, description="电影名称")
  5. year = fields.CharField(max_length=50, null=False, description="电影年份")
  1. from tortoise.contrib.pydantic import pydantic_model_creator
  2. from models import Movie
  3. Movie_Pydantic = pydantic_model_creator(Movie, name="Movie")
  4. MovieIn_Pydantic = pydantic_model_creator(Movie, name="MovieIn", exclude_readonly=True)