From 1eb40b1f33aaebd02f03fd1986e242b65c79d573 Mon Sep 17 00:00:00 2001 From: Esteban Maya Date: Mon, 8 Apr 2024 18:07:48 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Update=20ModelRead=20to=20ModelP?= =?UTF-8?q?ublic=20documentation=20and=20examples=20(#885)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- .../fastapi/multiple-models/image03.png | Bin 84929 -> 88924 bytes docs/tutorial/fastapi/multiple-models.md | 14 +++---- docs/tutorial/fastapi/read-one.md | 2 +- docs/tutorial/fastapi/relationships.md | 20 ++++----- docs/tutorial/fastapi/teams.md | 2 +- .../fastapi/app_testing/tutorial001/main.py | 10 ++--- .../app_testing/tutorial001_py310/main.py | 10 ++--- .../app_testing/tutorial001_py39/main.py | 10 ++--- .../tutorial/fastapi/delete/tutorial001.py | 10 ++--- .../fastapi/delete/tutorial001_py310.py | 10 ++--- .../fastapi/delete/tutorial001_py39.py | 10 ++--- .../fastapi/limit_and_offset/tutorial001.py | 8 ++-- .../limit_and_offset/tutorial001_py310.py | 8 ++-- .../limit_and_offset/tutorial001_py39.py | 8 ++-- .../fastapi/multiple_models/tutorial001.py | 6 +-- .../multiple_models/tutorial001_py310.py | 6 +-- .../multiple_models/tutorial001_py39.py | 6 +-- .../fastapi/multiple_models/tutorial002.py | 6 +-- .../multiple_models/tutorial002_py310.py | 6 +-- .../multiple_models/tutorial002_py39.py | 6 +-- .../tutorial/fastapi/read_one/tutorial001.py | 8 ++-- .../fastapi/read_one/tutorial001_py310.py | 8 ++-- .../fastapi/read_one/tutorial001_py39.py | 8 ++-- .../fastapi/relationships/tutorial001.py | 28 ++++++------- .../relationships/tutorial001_py310.py | 28 ++++++------- .../fastapi/relationships/tutorial001_py39.py | 28 ++++++------- .../session_with_dependency/tutorial001.py | 10 ++--- .../tutorial001_py310.py | 10 ++--- .../tutorial001_py39.py | 10 ++--- .../tutorial/fastapi/teams/tutorial001.py | 20 ++++----- .../fastapi/teams/tutorial001_py310.py | 20 ++++----- .../fastapi/teams/tutorial001_py39.py | 20 ++++----- .../tutorial/fastapi/update/tutorial001.py | 10 ++--- .../fastapi/update/tutorial001_py310.py | 10 ++--- .../fastapi/update/tutorial001_py39.py | 10 ++--- .../tutorial/fastapi/update/tutorial002.py | 10 ++--- .../fastapi/update/tutorial002_py310.py | 10 ++--- .../fastapi/update/tutorial002_py39.py | 10 ++--- .../test_delete/test_tutorial001.py | 12 +++--- .../test_delete/test_tutorial001_py310.py | 12 +++--- .../test_delete/test_tutorial001_py39.py | 12 +++--- .../test_limit_and_offset/test_tutorial001.py | 10 ++--- .../test_tutorial001_py310.py | 10 ++--- .../test_tutorial001_py39.py | 10 ++--- .../test_multiple_models/test_tutorial001.py | 8 ++-- .../test_tutorial001_py310.py | 8 ++-- .../test_tutorial001_py39.py | 8 ++-- .../test_multiple_models/test_tutorial002.py | 8 ++-- .../test_tutorial002_py310.py | 8 ++-- .../test_tutorial002_py39.py | 8 ++-- .../test_read_one/test_tutorial001.py | 10 ++--- .../test_read_one/test_tutorial001_py310.py | 10 ++--- .../test_read_one/test_tutorial001_py39.py | 10 ++--- .../test_relationships/test_tutorial001.py | 38 +++++++++--------- .../test_tutorial001_py310.py | 38 +++++++++--------- .../test_tutorial001_py39.py | 38 +++++++++--------- .../test_tutorial001.py | 12 +++--- .../test_tutorial001_py310.py | 12 +++--- .../test_tutorial001_py39.py | 12 +++--- .../test_teams/test_tutorial001.py | 24 +++++------ .../test_teams/test_tutorial001_py310.py | 24 +++++------ .../test_teams/test_tutorial001_py39.py | 24 +++++------ .../test_update/test_tutorial001.py | 12 +++--- .../test_update/test_tutorial001_py310.py | 12 +++--- .../test_update/test_tutorial001_py39.py | 12 +++--- .../test_update/test_tutorial002.py | 12 +++--- .../test_update/test_tutorial002_py310.py | 12 +++--- .../test_update/test_tutorial002_py39.py | 12 +++--- 68 files changed, 427 insertions(+), 427 deletions(-) diff --git a/docs/img/tutorial/fastapi/multiple-models/image03.png b/docs/img/tutorial/fastapi/multiple-models/image03.png index f3830b804543327756110bfa8bcfc3d021920442..796ca5a3703c23e6b6f9721219bf5e434bf6b916 100644 GIT binary patch literal 88924 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 ULDS3y8rDGMUnoCEJTv_GKje!R8~^|S literal 84929 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 diff --git a/docs/tutorial/fastapi/multiple-models.md b/docs/tutorial/fastapi/multiple-models.md index c4db7c6..41c1ac6 100644 --- a/docs/tutorial/fastapi/multiple-models.md +++ b/docs/tutorial/fastapi/multiple-models.md @@ -98,7 +98,7 @@ But we also want to have a `HeroCreate` for the data we want to receive when **c * `secret_name`, required * `age`, optional -And we want to have a `HeroRead` with the `id` field, but this time annotated with `id: int`, instead of `id: Optional[int]`, to make it clear that it is required in responses **read** from the clients: +And we want to have a `HeroPublic` with the `id` field, but this time annotated with `id: int`, instead of `id: Optional[int]`, to make it clear that it is required in responses **read** from the clients: * `id`, required * `name`, required @@ -183,9 +183,9 @@ Here's the important detail, and probably the most important feature of **SQLMod This means that the class `Hero` represents a **table** in the database. It is both a **Pydantic** model and a **SQLAlchemy** model. -But `HeroCreate` and `HeroRead` don't have `table = True`. They are only **data models**, they are only **Pydantic** models. They won't be used with the database, but only to declare data schemas for the API (or for other uses). +But `HeroCreate` and `HeroPublic` don't have `table = True`. They are only **data models**, they are only **Pydantic** models. They won't be used with the database, but only to declare data schemas for the API (or for other uses). -This also means that `SQLModel.metadata.create_all()` won't create tables in the database for `HeroCreate` and `HeroRead`, because they don't have `table = True`, which is exactly what we want. 🚀 +This also means that `SQLModel.metadata.create_all()` won't create tables in the database for `HeroCreate` and `HeroPublic`, because they don't have `table = True`, which is exactly what we want. 🚀 /// tip @@ -355,7 +355,7 @@ Then we just `add` it to the **session**, `commit`, and `refresh` it, and finall Because it is just refreshed, it has the `id` field set with a new ID taken from the database. -And now that we return it, FastAPI will validate the data with the `response_model`, which is a `HeroRead`: +And now that we return it, FastAPI will validate the data with the `response_model`, which is a `HeroPublic`: //// tab | Python 3.10+ @@ -743,9 +743,9 @@ As an alternative, we could use `HeroBase` directly in the API code instead of ` On top of that, we could easily decide in the future that we want to receive **more data** when creating a new hero apart from the data in `HeroBase` (for example, a password), and now we already have the class to put those extra fields. -### The `HeroRead` **Data Model** +### The `HeroPublic` **Data Model** -Now let's check the `HeroRead` model. +Now let's check the `HeroPublic` model. This one just declares that the `id` field is required when reading a hero from the API, because a hero read from the API will come from the database, and in the database it will always have an ID. @@ -815,7 +815,7 @@ This one just declares that the `id` field is required when reading a hero from ## Review the Updated Docs UI -The FastAPI code is still the same as above, we still use `Hero`, `HeroCreate`, and `HeroRead`. But now, we define them in a smarter way with inheritance. +The FastAPI code is still the same as above, we still use `Hero`, `HeroCreate`, and `HeroPublic`. But now, we define them in a smarter way with inheritance. So, we can jump to the docs UI right away and see how they look with the updated data. diff --git a/docs/tutorial/fastapi/read-one.md b/docs/tutorial/fastapi/read-one.md index becb2c6..0976961 100644 --- a/docs/tutorial/fastapi/read-one.md +++ b/docs/tutorial/fastapi/read-one.md @@ -164,7 +164,7 @@ This will let the client know that they probably made a mistake on their side an Then, if the hero exists, we return it. -And because we are using the `response_model` with `HeroRead`, it will be validated, documented, etc. +And because we are using the `response_model` with `HeroPublic`, it will be validated, documented, etc. //// tab | Python 3.10+ diff --git a/docs/tutorial/fastapi/relationships.md b/docs/tutorial/fastapi/relationships.md index e2a2678..4087dfc 100644 --- a/docs/tutorial/fastapi/relationships.md +++ b/docs/tutorial/fastapi/relationships.md @@ -40,9 +40,9 @@ Let's update that. 🤓 First, why is it that we are not getting the related data for each hero and for each team? -It's because we declared the `HeroRead` with only the same base fields of the `HeroBase` plus the `id`. But it doesn't include a field `team` for the **relationship attribute**. +It's because we declared the `HeroPublic` with only the same base fields of the `HeroBase` plus the `id`. But it doesn't include a field `team` for the **relationship attribute**. -And the same way, we declared the `TeamRead` with only the same base fields of the `TeamBase` plus the `id`. But it doesn't include a field `heroes` for the **relationship attribute**. +And the same way, we declared the `TeamPublic` with only the same base fields of the `TeamBase` plus the `id`. But it doesn't include a field `heroes` for the **relationship attribute**. //// tab | Python 3.10+ @@ -146,7 +146,7 @@ And the same way, we declared the `TeamRead` with only the same base fields of t Now, remember that FastAPI uses the `response_model` to validate and **filter** the response data? -In this case, we used `response_model=TeamRead` and `response_model=HeroRead`, so FastAPI will use them to filter the response data, even if we return a **table model** that includes **relationship attributes**: +In this case, we used `response_model=TeamPublic` and `response_model=HeroPublic`, so FastAPI will use them to filter the response data, even if we return a **table model** that includes **relationship attributes**: //// tab | Python 3.10+ @@ -300,7 +300,7 @@ Let's add a couple more **data models** that declare that data so we can use the ## Models with Relationships -Let's add the models `HeroReadWithTeam` and `TeamReadWithHeroes`. +Let's add the models `HeroPublicWithTeam` and `TeamPublicWithHeroes`. We'll add them **after** the other models so that we can easily reference the previous models. @@ -372,11 +372,11 @@ These two models are very **simple in code**, but there's a lot happening here. ### Inheritance and Type Annotations -The `HeroReadWithTeam` **inherits** from `HeroRead`, which means that it will have the **normal fields for reading**, including the required `id` that was declared in `HeroRead`. +The `HeroPublicWithTeam` **inherits** from `HeroPublic`, which means that it will have the **normal fields for reading**, including the required `id` that was declared in `HeroPublic`. -And then it adds the **new field** `team`, which could be `None`, and is declared with the type `TeamRead` with the base fields for reading a team. +And then it adds the **new field** `team`, which could be `None`, and is declared with the type `TeamPublic` with the base fields for reading a team. -Then we do the same for the `TeamReadWithHeroes`, it **inherits** from `TeamRead`, and declares the **new field** `heroes`, which is a list of `HeroRead`. +Then we do the same for the `TeamPublicWithHeroes`, it **inherits** from `TeamPublic`, and declares the **new field** `heroes`, which is a list of `HeroPublic`. ### Data Models Without Relationship Attributes @@ -386,11 +386,11 @@ Instead, here these are only **data models** that will tell FastAPI **which attr ### Reference to Other Models -Also, notice that the field `team` is not declared with this new `TeamReadWithHeroes`, because that would again create that infinite recursion of data. Instead, we declare it with the normal `TeamRead` model. +Also, notice that the field `team` is not declared with this new `TeamPublicWithHeroes`, because that would again create that infinite recursion of data. Instead, we declare it with the normal `TeamPublic` model. -And the same for `TeamReadWithHeroes`, the model used for the new field `heroes` uses `HeroRead` to get only each hero's data. +And the same for `TeamPublicWithHeroes`, the model used for the new field `heroes` uses `HeroPublic` to get only each hero's data. -This also means that, even though we have these two new models, **we still need the previous ones**, `HeroRead` and `TeamRead`, because we need to reference them here (and we are also using them in the rest of the *path operations*). +This also means that, even though we have these two new models, **we still need the previous ones**, `HeroPublic` and `TeamPublic`, because we need to reference them here (and we are also using them in the rest of the *path operations*). ## Update the Path Operations diff --git a/docs/tutorial/fastapi/teams.md b/docs/tutorial/fastapi/teams.md index cbdb4a9..9e366f2 100644 --- a/docs/tutorial/fastapi/teams.md +++ b/docs/tutorial/fastapi/teams.md @@ -14,7 +14,7 @@ It's the same process we did for heroes, with a base model, a **table model**, a We have a `TeamBase` **data model**, and from it, we inherit with a `Team` **table model**. -Then we also inherit from the `TeamBase` for the `TeamCreate` and `TeamRead` **data models**. +Then we also inherit from the `TeamBase` for the `TeamCreate` and `TeamPublic` **data models**. And we also create a `TeamUpdate` **data model**. diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py index 7014a73..f46d8b0 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py index cf1bbb7..702eba7 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -50,7 +50,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -59,7 +59,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -70,7 +70,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -78,7 +78,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py index 9f428ab..efdfd8e 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/delete/tutorial001.py b/docs_src/tutorial/fastapi/delete/tutorial001.py index 5328173..1871ab1 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/delete/tutorial001_py310.py b/docs_src/tutorial/fastapi/delete/tutorial001_py310.py index 45e2e1d..0dd0c88 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -45,7 +45,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -55,14 +55,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -71,7 +71,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/delete/tutorial001_py39.py b/docs_src/tutorial/fastapi/delete/tutorial001_py39.py index 12f6bc3..9ab3056 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py index 2352f39..ccf3d77 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py index ad8ff95..3402d40 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,14 +49,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py index b1f7cdc..3d223f3 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001.py index 7f59ac6..42ac805 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001.py @@ -17,7 +17,7 @@ class HeroCreate(SQLModel): age: Optional[int] = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -43,7 +43,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -53,7 +53,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py index ff12eff..b8dc44d 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py @@ -15,7 +15,7 @@ class HeroCreate(SQLModel): age: int | None = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py index 977a1ac..c6be23d 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py @@ -17,7 +17,7 @@ class HeroCreate(SQLModel): age: Optional[int] = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -43,7 +43,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -53,7 +53,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002.py index fffbe72..79c71f1 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py index 7373edf..79e7447 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,7 +49,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py index 1b4a512..77093bc 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001.py b/docs_src/tutorial/fastapi/read_one/tutorial001.py index f18426e..a399451 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py b/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py index e8c7d49..1a46281 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,14 +49,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py b/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py index 4dc5702..9ac0a65 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001.py b/docs_src/tutorial/fastapi/relationships/tutorial001.py index 51339e2..ac8a557 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -43,7 +43,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -58,12 +58,12 @@ class HeroUpdate(SQLModel): team_id: Optional[int] = None -class HeroReadWithTeam(HeroRead): - team: Optional[TeamRead] = None +class HeroPublicWithTeam(HeroPublic): + team: Optional[TeamPublic] = None -class TeamReadWithHeroes(TeamRead): - heroes: List[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: List[HeroPublic] = [] sqlite_file_name = "database.db" @@ -90,7 +90,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -99,7 +99,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -110,7 +110,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -118,7 +118,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -144,7 +144,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -153,7 +153,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=List[TeamRead]) +@app.get("/teams/", response_model=List[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -164,7 +164,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -172,7 +172,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py b/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py index 35257bd..5110b15 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py @@ -17,7 +17,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -41,7 +41,7 @@ class Hero(HeroBase, table=True): team: Team | None = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -56,12 +56,12 @@ class HeroUpdate(SQLModel): team_id: int | None = None -class HeroReadWithTeam(HeroRead): - team: TeamRead | None = None +class HeroPublicWithTeam(HeroPublic): + team: TeamPublic | None = None -class TeamReadWithHeroes(TeamRead): - heroes: list[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: list[HeroPublic] = [] sqlite_file_name = "database.db" @@ -88,7 +88,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -97,7 +97,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -108,7 +108,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -116,7 +116,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -142,7 +142,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -151,7 +151,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -162,7 +162,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -170,7 +170,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py b/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py index 6ceae13..a4e953c 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -43,7 +43,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -58,12 +58,12 @@ class HeroUpdate(SQLModel): team_id: Optional[int] = None -class HeroReadWithTeam(HeroRead): - team: Optional[TeamRead] = None +class HeroPublicWithTeam(HeroPublic): + team: Optional[TeamPublic] = None -class TeamReadWithHeroes(TeamRead): - heroes: list[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: list[HeroPublic] = [] sqlite_file_name = "database.db" @@ -90,7 +90,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -99,7 +99,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -110,7 +110,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -118,7 +118,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -144,7 +144,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -153,7 +153,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -164,7 +164,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -172,7 +172,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py index 7014a73..f46d8b0 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py index cf1bbb7..702eba7 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -50,7 +50,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -59,7 +59,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -70,7 +70,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -78,7 +78,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py index 9f428ab..efdfd8e 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/teams/tutorial001.py b/docs_src/tutorial/fastapi/teams/tutorial001.py index 785c525..4289221 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -42,7 +42,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -81,7 +81,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -90,7 +90,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -101,7 +101,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -109,7 +109,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -135,7 +135,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -144,7 +144,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=List[TeamRead]) +@app.get("/teams/", response_model=List[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -155,7 +155,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -163,7 +163,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/teams/tutorial001_py310.py b/docs_src/tutorial/fastapi/teams/tutorial001_py310.py index dea4bd8..630ae4f 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001_py310.py @@ -17,7 +17,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -40,7 +40,7 @@ class Hero(HeroBase, table=True): team: Team | None = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -79,7 +79,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -88,7 +88,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -99,7 +99,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -107,7 +107,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -133,7 +133,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -142,7 +142,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -153,7 +153,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -161,7 +161,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/teams/tutorial001_py39.py b/docs_src/tutorial/fastapi/teams/tutorial001_py39.py index cc6429a..661e435 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001_py39.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -42,7 +42,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -81,7 +81,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -90,7 +90,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -101,7 +101,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -109,7 +109,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -135,7 +135,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -144,7 +144,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -155,7 +155,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -163,7 +163,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/update/tutorial001.py b/docs_src/tutorial/fastapi/update/tutorial001.py index feab25c..6a02f6c 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001.py +++ b/docs_src/tutorial/fastapi/update/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial001_py310.py b/docs_src/tutorial/fastapi/update/tutorial001_py310.py index 02bec2e..a98ee68 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/update/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -45,7 +45,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -55,14 +55,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -71,7 +71,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial001_py39.py b/docs_src/tutorial/fastapi/update/tutorial001_py39.py index 241d205..b6d62bf 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/update/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002.py b/docs_src/tutorial/fastapi/update/tutorial002.py index 1333654..c8838ae 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002.py +++ b/docs_src/tutorial/fastapi/update/tutorial002.py @@ -19,7 +19,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -54,7 +54,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -66,14 +66,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -82,7 +82,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002_py310.py b/docs_src/tutorial/fastapi/update/tutorial002_py310.py index 6be274e..d250fec 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002_py310.py +++ b/docs_src/tutorial/fastapi/update/tutorial002_py310.py @@ -17,7 +17,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -64,14 +64,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -80,7 +80,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002_py39.py b/docs_src/tutorial/fastapi/update/tutorial002_py39.py index 19d30ea..14ad1b4 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002_py39.py +++ b/docs_src/tutorial/fastapi/update/tutorial002_py39.py @@ -19,7 +19,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -54,7 +54,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -66,14 +66,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -82,7 +82,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py index 706cc8a..f293199 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py @@ -99,7 +99,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -136,7 +136,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -244,7 +244,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -297,8 +297,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py index 46c8c42..2757c87 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py @@ -102,7 +102,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -139,7 +139,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,7 +175,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -247,7 +247,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -300,8 +300,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py index e2874c1..3299086 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py @@ -102,7 +102,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -139,7 +139,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,7 +175,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -247,7 +247,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -300,8 +300,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py index d177c80..4047539 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -230,8 +230,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py index 0308699..480b92a 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py @@ -107,7 +107,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -144,7 +144,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -180,7 +180,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -233,8 +233,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py index f7e42e4..0a9d5c9 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py @@ -107,7 +107,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -144,7 +144,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -180,7 +180,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -233,8 +233,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py index 2ebfc0c..276a021 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py @@ -74,7 +74,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -101,7 +101,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -154,8 +154,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py index c17e482..b6f082a 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py @@ -76,7 +76,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -103,7 +103,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -156,8 +156,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py index 258b3a4..82365ce 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py index 47f2e64..8327c6d 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py @@ -74,7 +74,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -101,7 +101,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -154,8 +154,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py index c09b15b..30edc4d 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py index 8ad0f27..2b86d3f 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py index 62fbb25..9b1d527 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py @@ -59,7 +59,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -86,7 +86,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -122,7 +122,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,8 +175,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py index 913d098..f18b0d6 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py @@ -62,7 +62,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -89,7 +89,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -125,7 +125,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -178,8 +178,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py index 9bedf5c..4423d1a 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py @@ -62,7 +62,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -89,7 +89,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -125,7 +125,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -178,8 +178,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py index b301697..4b4f47b 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py @@ -147,7 +147,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -184,7 +184,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -220,7 +220,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -292,7 +292,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -346,7 +346,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -383,7 +383,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -419,7 +419,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -491,7 +491,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -554,8 +554,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -584,8 +584,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -615,14 +615,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -681,8 +681,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -691,8 +691,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -702,7 +702,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py index 4d310a8..dcb78f5 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py @@ -150,7 +150,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -187,7 +187,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -295,7 +295,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -349,7 +349,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -386,7 +386,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -422,7 +422,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -494,7 +494,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -557,8 +557,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -587,8 +587,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -618,14 +618,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -684,8 +684,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -694,8 +694,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -705,7 +705,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py index 0603739..5ef7338 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py @@ -150,7 +150,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -187,7 +187,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -295,7 +295,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -349,7 +349,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -386,7 +386,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -422,7 +422,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -494,7 +494,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -557,8 +557,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -587,8 +587,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -618,14 +618,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -684,8 +684,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -694,8 +694,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -705,7 +705,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py index 441cc42..388cfa9 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py @@ -99,7 +99,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -136,7 +136,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -244,7 +244,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -297,8 +297,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py index 7c427a1..65bab47 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -249,7 +249,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -302,8 +302,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py index ea63f52..cdab85d 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -249,7 +249,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -302,8 +302,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py index a532625..25daadf 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py @@ -134,7 +134,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -171,7 +171,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -207,7 +207,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,7 +279,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -333,7 +333,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -370,7 +370,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -406,7 +406,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -478,7 +478,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -541,8 +541,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -626,8 +626,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py index 33029f6..63f8a1d 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py @@ -137,7 +137,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -174,7 +174,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -210,7 +210,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -282,7 +282,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -336,7 +336,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -373,7 +373,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -409,7 +409,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -481,7 +481,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -544,8 +544,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -629,8 +629,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py index 66705e1..30b68e0 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py @@ -137,7 +137,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -174,7 +174,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -210,7 +210,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -282,7 +282,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -336,7 +336,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -373,7 +373,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -409,7 +409,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -481,7 +481,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -544,8 +544,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -629,8 +629,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py index 973ab2d..0856b24 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py @@ -106,7 +106,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -143,7 +143,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -179,7 +179,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -276,8 +276,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py index 090af8c..d79b2ec 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py @@ -109,7 +109,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -146,7 +146,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -182,7 +182,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -226,7 +226,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,8 +279,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py index 22dfb8f..1be81de 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py @@ -109,7 +109,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -146,7 +146,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -182,7 +182,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -226,7 +226,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,8 +279,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py index 21ca74e..32e343e 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py @@ -169,7 +169,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -206,7 +206,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -242,7 +242,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -286,7 +286,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -340,8 +340,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py index 6feb1ec..b05f5b2 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -209,7 +209,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -245,7 +245,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -289,7 +289,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -343,8 +343,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py index 13d70dd..807e334 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -209,7 +209,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -245,7 +245,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -289,7 +289,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -343,8 +343,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": {