Update Tortoise docs and examples

This commit is contained in:
François Voron
2020-11-21 17:20:51 +01:00
parent 60c618a8a3
commit e69a124084
5 changed files with 29 additions and 11 deletions

View File

@ -32,14 +32,14 @@ As you can see, **FastAPI Users** provides a mixin that will include base fields
## Create the tables
We'll now create an SQLAlchemy enigne and ask it to create all the defined tables.
We'll now create an SQLAlchemy engine and ask it to create all the defined tables.
```py hl_lines="36 37 38 39 40"
{!./src/db_sqlalchemy.py!}
```
!!!tip
In production, you would probably want to create the tables with Alembic, integrated with migrations, etc.
!!! warning
In production, it's strongly recommended to setup a migration system to update your SQL schemas. See [Alembic](https://alembic.sqlalchemy.org/en/latest/).
## Create the database adapter

View File

@ -44,12 +44,15 @@ Notice that we pass a reference to your [`UserDB` model](../model.md).
For using Tortoise ORM we must register our models and database.
Tortoise ORM supports integration with Starlette/FastAPI out-of-the-box. It will automatically bind startup and shutdown events.
Tortoise ORM supports integration with FastAPI out-of-the-box. It will automatically bind startup and shutdown events.
```py hl_lines="33"
```py hl_lines="33 34 35 36 37 38"
{!./src/db_tortoise.py!}
```
!!! warning
In production, it's strongly recommended to setup a migration system to update your SQL schemas. See [https://tortoise-orm.readthedocs.io/en/latest/migration.html](https://tortoise-orm.readthedocs.io/en/latest/migration.html).
## Next steps
We will now configure an [authentication method](../authentication/index.md).

View File

@ -1,7 +1,7 @@
from fastapi import FastAPI
from fastapi_users import models
from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase
from tortoise.contrib.starlette import register_tortoise
from tortoise.contrib.fastapi import register_tortoise
class User(models.BaseUser):
@ -30,4 +30,9 @@ class UserModel(TortoiseBaseUserModel):
user_db = TortoiseUserDatabase(UserDB, UserModel)
app = FastAPI()
register_tortoise(app, modules={"models": ["path_to_your_package"]})
register_tortoise(
app,
db_url=DATABASE_URL,
modules={"models": ["path_to_your_package"]},
generate_schemas=True,
)

View File

@ -2,7 +2,7 @@ from fastapi import FastAPI, Request
from fastapi_users import FastAPIUsers, models
from fastapi_users.authentication import JWTAuthentication
from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase
from tortoise.contrib.starlette import register_tortoise
from tortoise.contrib.fastapi import register_tortoise
DATABASE_URL = "sqlite://./test.db"
SECRET = "SECRET"
@ -30,7 +30,12 @@ class UserModel(TortoiseBaseUserModel):
user_db = TortoiseUserDatabase(UserDB, UserModel)
app = FastAPI()
register_tortoise(app, db_url=DATABASE_URL, modules={"models": ["test"]})
register_tortoise(
app,
db_url=DATABASE_URL,
modules={"models": ["path_to_your_package"]},
generate_schemas=True,
)
def on_after_register(user: UserDB, request: Request):

View File

@ -8,7 +8,7 @@ from fastapi_users.db import (
)
from httpx_oauth.clients.google import GoogleOAuth2
from tortoise import fields
from tortoise.contrib.starlette import register_tortoise
from tortoise.contrib.fastapi import register_tortoise
DATABASE_URL = "sqlite://./test.db"
SECRET = "SECRET"
@ -43,7 +43,12 @@ class OAuthAccountModel(TortoiseBaseOAuthAccountModel):
user_db = TortoiseUserDatabase(UserDB, UserModel, OAuthAccountModel)
app = FastAPI()
register_tortoise(app, db_url=DATABASE_URL, modules={"models": ["test"]})
register_tortoise(
app,
db_url=DATABASE_URL,
modules={"models": ["path_to_your_package"]},
generate_schemas=True,
)
def on_after_register(user: UserDB, request: Request):