diff --git a/examples/miniapps/fastapi-sqlalchemy/README.rst b/examples/miniapps/fastapi-sqlalchemy/README.rst new file mode 100644 index 00000000..2c8e0b66 --- /dev/null +++ b/examples/miniapps/fastapi-sqlalchemy/README.rst @@ -0,0 +1,96 @@ +FastAPI + SQLAlchemy + Dependency Injector Example +================================================== + +This is a `FastAPI `_ + +`SQLAlchemy `_ + +`Dependency Injector `_ example application. + +Thanks to `@ShvetsovYura `_ for providing initial example: +`FastAPI_DI_SqlAlchemy `_. + +Run +--- + +Build the Docker image: + +.. code-block:: bash + + docker-compose build + +Run the docker-compose environment: + +.. code-block:: bash + + docker-compose up + +The output should be something like: + +.. code-block:: + + Starting fastapi-sqlalchemy_webapp_1 ... done + Attaching to fastapi-sqlalchemy_webapp_1 + webapp_1 | 2021-02-04 22:07:19,804 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 + webapp_1 | 2021-02-04 22:07:19,804 INFO sqlalchemy.engine.base.Engine () + webapp_1 | 2021-02-04 22:07:19,804 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 + webapp_1 | 2021-02-04 22:07:19,804 INFO sqlalchemy.engine.base.Engine () + webapp_1 | 2021-02-04 22:07:19,805 INFO sqlalchemy.engine.base.Engine PRAGMA main.table_info("users") + webapp_1 | 2021-02-04 22:07:19,805 INFO sqlalchemy.engine.base.Engine () + webapp_1 | 2021-02-04 22:07:19,808 INFO sqlalchemy.engine.base.Engine PRAGMA temp.table_info("users") + webapp_1 | 2021-02-04 22:07:19,808 INFO sqlalchemy.engine.base.Engine () + webapp_1 | 2021-02-04 22:07:19,809 INFO sqlalchemy.engine.base.Engine + webapp_1 | CREATE TABLE users ( + webapp_1 | id INTEGER NOT NULL, + webapp_1 | email VARCHAR, + webapp_1 | hashed_password VARCHAR, + webapp_1 | is_active BOOLEAN, + webapp_1 | PRIMARY KEY (id), + webapp_1 | UNIQUE (email), + webapp_1 | CHECK (is_active IN (0, 1)) + webapp_1 | ) + webapp_1 | + webapp_1 | + webapp_1 | 2021-02-04 22:07:19,810 INFO sqlalchemy.engine.base.Engine () + webapp_1 | 2021-02-04 22:07:19,821 INFO sqlalchemy.engine.base.Engine COMMIT + webapp_1 | INFO: Started server process [8] + webapp_1 | INFO: Waiting for application startup. + webapp_1 | INFO: Application startup complete. + webapp_1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) + +After that visit http://127.0.0.1:8000/docs in your browser. + +Test +---- + +This application comes with the unit tests. + +To run the tests do: + +.. code-block:: bash + + docker-compose run --rm webapp py.test webapp/tests.py --cov=webapp + +The output should be something like: + +.. code-block:: + + platform linux -- Python 3.9.1, pytest-6.2.2, py-1.10.0, pluggy-0.13.1 + rootdir: /code + plugins: cov-2.11.1 + collected 7 items + + webapp/tests.py ....... [100%] + + ----------- coverage: platform linux, python 3.9.1-final-0 ----------- + Name Stmts Miss Cover + -------------------------------------------- + webapp/__init__.py 0 0 100% + webapp/application.py 14 0 100% + webapp/containers.py 9 0 100% + webapp/database.py 24 8 67% + webapp/endpoints.py 32 0 100% + webapp/models.py 10 1 90% + webapp/repositories.py 36 20 44% + webapp/services.py 16 0 100% + webapp/tests.py 59 0 100% + -------------------------------------------- + TOTAL 200 29 86%