diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml index 1b7d87d0951531391ee02601ff7b16a9803e27db..21067cc9a0a919d0c935730c9d68c5587e17301b 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml +++ b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml @@ -34,6 +34,9 @@ aiomysql = "^0.0.21" {%- if cookiecutter.enable_redis == "True" %} aioredis = {version = "^2.0.0", extras = ["hiredis"]} {%- endif %} +httptools = "^0.3.0" +async-exit-stack = "^1.0.1" +async-generator = "^1.10" [tool.poetry.dev-dependencies] pytest = "^6.0" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py index 9e511d77079214abfeb9e2670030d528fb5d7e81..bb06c2beb40cc295c1ce67c9fb8e6c00470d06ce 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py @@ -13,7 +13,8 @@ async def get_db_session(request: Request) -> AsyncGenerator[AsyncSession, None] """ session: AsyncSession = request.app.state.db_session_factory() - yield session - - await session.commit() - await session.close() + try: # noqa: WPS501 + yield session + finally: + await session.commit() + await session.close() diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e6ef7b88b17531f8ac6c59f062dde4c1c9917dc1 --- /dev/null +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py @@ -0,0 +1 @@ +"""Services for {{cookiecutter.project_name}}.""" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py index 986d33648ff528290ee68d6cde864f2575f608a7..1089ed63cfe363f03bc7306fbe915043e343fb07 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py @@ -15,6 +15,7 @@ async def get_redis_connection(request: Request) -> AsyncGenerator[Redis, None]: """ redis_client = Redis(connection_pool=request.app.state.redis_pool) - yield redis_client - - await redis_client.close() + try: # noqa: WPS501 + yield redis_client + finally: + await redis_client.close() diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_fastapitestproject.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py similarity index 100% rename from fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_fastapitestproject.py rename to fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..852f71006ff14246cb4fa2669bd1808fc2b7fd17 --- /dev/null +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py @@ -0,0 +1 @@ +"""WEB API for {{cookiecutter.project_name}}.""" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py index aeb4d0d26f4f123ac99536cbb12f5ca0d1eb8028..5c2ab6b2df31fc26908be0f871be1c75262c8aa1 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py @@ -38,4 +38,5 @@ async def set_value( :param redis_value: new value data. :param redis: redis connection. """ - await redis.set(name=redis_value.key, value=redis_value.value) + if redis_value.value is not None: + await redis.set(name=redis_value.key, value=redis_value.value) diff --git a/pyproject.toml b/pyproject.toml index 95563b992966a69ca8c464a4fcd86bb68fde89bd..dea1852887c30216143b7c4ddedae9ba2fc83a24 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fastapi_template" -version = "2.2.4" +version = "2.3.0" description = "Feature-rich robust FastAPI template" authors = ["Pavel Kirilin <win10@list.ru>"] packages = [