dialoguemd / fastapi-sqla

SQLAlchemy extension for FastAPI with support for pagination, asyncio, SQLModel and pytest, ready for production.
MIT License
172 stars 11 forks source link

feat: use pure ASGI middlewares #145

Closed alixlahuec closed 3 weeks ago

alixlahuec commented 4 weeks ago

Problem

When using multiple sessions, we've seen sporadic issues coming from the injected middlewares where the response body is missing, causing errors due to a mismatch with the promised Content-Length. We've also observed a significant increase in endpoint latency.

Besides, the middleware class we're using, BaseHTTPMiddleware, is no longer the recommended way of writing middlewares for Starlette. It's known to have functional issues and does not scale well (see discussion on this FastAPI issue, discussion on this Starlette issue, and this performance benchmark).

Solution

Refactor the middleware used to inject sessions into the request, to be pure ASGI middleware.

Related

Validation

✅ Tests are passing ✅ ER smoke tests with 2 sessions - calls are successful, both middlewares are present and executed (sample request - only the default session is used, sample request - both sessions are used)

codecov[bot] commented 3 weeks ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (a7cc121) to head (8ec440c).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #145 +/- ## ========================================= Coverage 100.00% 100.00% ========================================= Files 10 10 Lines 487 519 +32 Branches 71 77 +6 ========================================= + Hits 487 519 +32 ``` | [Flag](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | Coverage Δ | | |---|---|---| | [.10-sqlalchemy1.4-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.10-sqlalchemy1.4-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.10-sqlalchemy1.4-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.10-sqlalchemy1.4-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.10-sqlalchemy1.4-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.10-sqlalchemy1.4-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.10-sqlalchemy1.4-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.10-sqlalchemy1.4-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.10-sqlalchemy2.0-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.10-sqlalchemy2.0-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.10-sqlalchemy2.0-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.10-sqlalchemy2.0-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.10-sqlalchemy2.0-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.10-sqlalchemy2.0-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.10-sqlalchemy2.0-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.10-sqlalchemy2.0-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.10-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.10-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.10-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.10-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.10-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.10-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.10-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.10-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.11-sqlalchemy1.4-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.11-sqlalchemy1.4-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.11-sqlalchemy1.4-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.11-sqlalchemy1.4-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.11-sqlalchemy1.4-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.11-sqlalchemy1.4-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.11-sqlalchemy1.4-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.11-sqlalchemy1.4-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.11-sqlalchemy2.0-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.11-sqlalchemy2.0-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.11-sqlalchemy2.0-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.11-sqlalchemy2.0-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.11-sqlalchemy2.0-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.11-sqlalchemy2.0-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.11-sqlalchemy2.0-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.11-sqlalchemy2.0-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.11-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.11-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.11-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.11-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.11-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.11-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.11-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.11-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.12-sqlalchemy1.4-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.12-sqlalchemy1.4-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.12-sqlalchemy1.4-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.12-sqlalchemy1.4-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.12-sqlalchemy1.4-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.12-sqlalchemy1.4-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.12-sqlalchemy1.4-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.12-sqlalchemy1.4-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.12-sqlalchemy2.0-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.12-sqlalchemy2.0-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.12-sqlalchemy2.0-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.12-sqlalchemy2.0-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.12-sqlalchemy2.0-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.12-sqlalchemy2.0-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.12-sqlalchemy2.0-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.12-sqlalchemy2.0-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.12-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.12-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.12-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.12-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.12-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.12-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.12-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.12-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.9-sqlalchemy1.4-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.9-sqlalchemy1.4-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.9-sqlalchemy1.4-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.9-sqlalchemy1.4-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.9-sqlalchemy1.4-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `98.07% <100.00%> (+0.12%)` | :arrow_up: | | [.9-sqlalchemy1.4-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.9-sqlalchemy1.4-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `75.14% <57.74%> (-1.04%)` | :arrow_down: | | [.9-sqlalchemy1.4-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.9-sqlalchemy2.0-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.9-sqlalchemy2.0-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.9-sqlalchemy2.0-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.9-sqlalchemy2.0-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.9-sqlalchemy2.0-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.49% <100.00%> (+0.16%)` | :arrow_up: | | [.9-sqlalchemy2.0-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.53% <100.00%> (+0.22%)` | :arrow_up: | | [.9-sqlalchemy2.0-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.56% <57.74%> (-1.00%)` | :arrow_down: | | [.9-sqlalchemy2.0-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.60% <57.74%> (-0.94%)` | :arrow_down: | | [.9-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.9-sqlalchemy2.0-sqlmodel-pydantic1-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.9-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.9-sqlalchemy2.0-sqlmodel-pydantic1-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | | [.9-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `97.10% <100.00%> (+0.18%)` | :arrow_up: | | [.9-sqlalchemy2.0-sqlmodel-pydantic2-asyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `96.14% <100.00%> (+0.25%)` | :arrow_up: | | [.9-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-aws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `74.18% <57.74%> (-0.98%)` | :arrow_down: | | [.9-sqlalchemy2.0-sqlmodel-pydantic2-noasyncpg-noaws_rds_iam](https://app.codecov.io/gh/dialoguemd/fastapi-sqla/pull/145/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd) | `73.21% <57.74%> (-0.91%)` | :arrow_down: | Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dialoguemd#carryforward-flags-in-the-pull-request-comment) to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

alixlahuec commented 3 weeks ago

✅ Did a final smoke test with ER, with both sessions & read/writes 🚀