Fix #600: revamp Tortoise/Pydantic interaction (#612)

This commit is contained in:
François Voron
2021-04-20 14:46:36 +02:00
committed by GitHub
parent 61a99755e8
commit 3ac67377cb
6 changed files with 76 additions and 44 deletions

View File

@ -9,6 +9,7 @@ from fastapi_users.db import (
from httpx_oauth.clients.google import GoogleOAuth2
from tortoise import fields
from tortoise.contrib.fastapi import register_tortoise
from tortoise.contrib.pydantic import PydanticModel
DATABASE_URL = "sqlite://./test.db"
SECRET = "SECRET"
@ -17,6 +18,14 @@ SECRET = "SECRET"
google_oauth_client = GoogleOAuth2("CLIENT_ID", "CLIENT_SECRET")
class UserModel(TortoiseBaseUserModel):
pass
class OAuthAccountModel(TortoiseBaseOAuthAccountModel):
user = fields.ForeignKeyField("models.UserModel", related_name="oauth_accounts")
class User(models.BaseUser, models.BaseOAuthAccountMixin):
pass
@ -29,16 +38,10 @@ class UserUpdate(User, models.BaseUserUpdate):
pass
class UserDB(User, models.BaseUserDB):
pass
class UserModel(TortoiseBaseUserModel):
pass
class OAuthAccountModel(TortoiseBaseOAuthAccountModel):
user = fields.ForeignKeyField("models.UserModel", related_name="oauth_accounts")
class UserDB(User, models.BaseUserDB, PydanticModel):
class Config:
orm_mode = True
orig_model = UserModel
user_db = TortoiseUserDatabase(UserDB, UserModel, OAuthAccountModel)
@ -46,7 +49,7 @@ app = FastAPI()
register_tortoise(
app,
db_url=DATABASE_URL,
modules={"models": ["path_to_your_package"]},
modules={"models": ["oauth_full_tortoise"]},
generate_schemas=True,
)