From e69a1240849cd3d2d468f793aae23632c16e4652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Voron?= Date: Sat, 21 Nov 2020 17:20:51 +0100 Subject: [PATCH] Update Tortoise docs and examples --- docs/configuration/databases/sqlalchemy.md | 6 +++--- docs/configuration/databases/tortoise.md | 7 +++++-- docs/src/db_tortoise.py | 9 +++++++-- docs/src/full_tortoise.py | 9 +++++++-- docs/src/oauth_full_tortoise.py | 9 +++++++-- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/configuration/databases/sqlalchemy.md b/docs/configuration/databases/sqlalchemy.md index 6206927a..7c7c1240 100644 --- a/docs/configuration/databases/sqlalchemy.md +++ b/docs/configuration/databases/sqlalchemy.md @@ -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 diff --git a/docs/configuration/databases/tortoise.md b/docs/configuration/databases/tortoise.md index 8813cb6d..55f4dfba 100644 --- a/docs/configuration/databases/tortoise.md +++ b/docs/configuration/databases/tortoise.md @@ -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). diff --git a/docs/src/db_tortoise.py b/docs/src/db_tortoise.py index 980fee8a..69166c37 100644 --- a/docs/src/db_tortoise.py +++ b/docs/src/db_tortoise.py @@ -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, +) diff --git a/docs/src/full_tortoise.py b/docs/src/full_tortoise.py index 30e0feb4..5b2ba8d8 100644 --- a/docs/src/full_tortoise.py +++ b/docs/src/full_tortoise.py @@ -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): diff --git a/docs/src/oauth_full_tortoise.py b/docs/src/oauth_full_tortoise.py index d263ddbf..704468b7 100644 --- a/docs/src/oauth_full_tortoise.py +++ b/docs/src/oauth_full_tortoise.py @@ -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):