├── .cspell.jsonc ├── .github ├── actions │ └── setup-poetry-deps │ │ └── action.yml └── workflows │ └── ci.yml ├── .gitignore ├── Dockerfile ├── Makefile ├── README.md ├── docker-compose.yml ├── docs ├── ascii-flow.md ├── clean-arch-01.png ├── clean-arch-02.png ├── clean-arch-03.png ├── faq.md ├── fastapi-doc.png └── fastapi-swagger.png ├── poetry.lock ├── pyproject.toml ├── scripts ├── mongodb-init.sh ├── mysql-init.sql └── postgres-init.sql ├── src ├── common │ ├── __init__.py │ ├── docstring.py │ ├── type.py │ └── utils.py ├── controllers │ ├── __init__.py │ ├── graphql │ │ ├── __init__.py │ │ ├── extension.py │ │ └── pokemon │ │ │ ├── __init__.py │ │ │ ├── mapper.py │ │ │ ├── mutation.py │ │ │ ├── query.py │ │ │ ├── router.py │ │ │ └── schema.py │ └── rest │ │ ├── __init__.py │ │ ├── extension.py │ │ └── pokemon │ │ ├── __init__.py │ │ ├── mapper.py │ │ ├── router.py │ │ └── schema.py ├── di │ ├── __init__.py │ ├── dependency_injection.py │ └── unit_of_work.py ├── main.py ├── models │ ├── __init__.py │ ├── exception.py │ └── pokemon.py ├── repositories │ ├── __init__.py │ ├── abstraction │ │ ├── __init__.py │ │ └── pokemon.py │ ├── document_db │ │ ├── __init__.py │ │ └── pokemon │ │ │ ├── __init__.py │ │ │ ├── mapper.py │ │ │ ├── odm.py │ │ │ └── repository.py │ ├── key_value_db │ │ ├── __init__.py │ │ └── pokemon │ │ │ ├── __init__.py │ │ │ ├── mapper.py │ │ │ ├── okvm.py │ │ │ └── repository.py │ └── relational_db │ │ ├── __init__.py │ │ └── pokemon │ │ ├── __init__.py │ │ ├── mapper.py │ │ ├── orm.py │ │ └── repository.py ├── settings │ ├── __init__.py │ └── db │ │ ├── __init__.py │ │ ├── base.py │ │ ├── mongodb.py │ │ ├── mysql.py │ │ ├── postgres.py │ │ ├── redis.py │ │ └── sqlite.py └── usecases │ ├── __init__.py │ └── pokemon.py └── tests ├── __init__.py ├── api_db_test.bats ├── conftest.py ├── functional ├── __init__.py └── test_pokemon_evolution_scenarios.py ├── integration ├── __init__.py ├── test_graphql_apis.py └── test_rest_apis.py └── unit ├── __init__.py ├── test_repository_document_db_pokemon.py ├── test_repository_key_value_db_pokemon.py ├── test_repository_relational_db_pokemon.py └── test_usecase_pokemon.py /.cspell.jsonc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/.cspell.jsonc -------------------------------------------------------------------------------- /.github/actions/setup-poetry-deps/action.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/.github/actions/setup-poetry-deps/action.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/Dockerfile -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/README.md -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /docs/ascii-flow.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/ascii-flow.md -------------------------------------------------------------------------------- /docs/clean-arch-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/clean-arch-01.png -------------------------------------------------------------------------------- /docs/clean-arch-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/clean-arch-02.png -------------------------------------------------------------------------------- /docs/clean-arch-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/clean-arch-03.png -------------------------------------------------------------------------------- /docs/faq.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/faq.md -------------------------------------------------------------------------------- /docs/fastapi-doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/fastapi-doc.png -------------------------------------------------------------------------------- /docs/fastapi-swagger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/docs/fastapi-swagger.png -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/poetry.lock -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/pyproject.toml -------------------------------------------------------------------------------- /scripts/mongodb-init.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/scripts/mongodb-init.sh -------------------------------------------------------------------------------- /scripts/mysql-init.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/scripts/mysql-init.sql -------------------------------------------------------------------------------- /scripts/postgres-init.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE test_db; 2 | -------------------------------------------------------------------------------- /src/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/common/docstring.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/common/docstring.py -------------------------------------------------------------------------------- /src/common/type.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/common/type.py -------------------------------------------------------------------------------- /src/common/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/common/utils.py -------------------------------------------------------------------------------- /src/controllers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/__init__.py -------------------------------------------------------------------------------- /src/controllers/graphql/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/controllers/graphql/extension.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/extension.py -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/pokemon/mapper.py -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/mutation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/pokemon/mutation.py -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/query.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/pokemon/query.py -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/router.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/pokemon/router.py -------------------------------------------------------------------------------- /src/controllers/graphql/pokemon/schema.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/graphql/pokemon/schema.py -------------------------------------------------------------------------------- /src/controllers/rest/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/controllers/rest/extension.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/rest/extension.py -------------------------------------------------------------------------------- /src/controllers/rest/pokemon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/controllers/rest/pokemon/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/rest/pokemon/mapper.py -------------------------------------------------------------------------------- /src/controllers/rest/pokemon/router.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/rest/pokemon/router.py -------------------------------------------------------------------------------- /src/controllers/rest/pokemon/schema.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/controllers/rest/pokemon/schema.py -------------------------------------------------------------------------------- /src/di/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/di/dependency_injection.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/di/dependency_injection.py -------------------------------------------------------------------------------- /src/di/unit_of_work.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/di/unit_of_work.py -------------------------------------------------------------------------------- /src/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/main.py -------------------------------------------------------------------------------- /src/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/models/exception.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/models/exception.py -------------------------------------------------------------------------------- /src/models/pokemon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/models/pokemon.py -------------------------------------------------------------------------------- /src/repositories/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/repositories/abstraction/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/abstraction/__init__.py -------------------------------------------------------------------------------- /src/repositories/abstraction/pokemon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/abstraction/pokemon.py -------------------------------------------------------------------------------- /src/repositories/document_db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/document_db/__init__.py -------------------------------------------------------------------------------- /src/repositories/document_db/pokemon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/repositories/document_db/pokemon/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/document_db/pokemon/mapper.py -------------------------------------------------------------------------------- /src/repositories/document_db/pokemon/odm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/document_db/pokemon/odm.py -------------------------------------------------------------------------------- /src/repositories/document_db/pokemon/repository.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/document_db/pokemon/repository.py -------------------------------------------------------------------------------- /src/repositories/key_value_db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/key_value_db/__init__.py -------------------------------------------------------------------------------- /src/repositories/key_value_db/pokemon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/repositories/key_value_db/pokemon/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/key_value_db/pokemon/mapper.py -------------------------------------------------------------------------------- /src/repositories/key_value_db/pokemon/okvm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/key_value_db/pokemon/okvm.py -------------------------------------------------------------------------------- /src/repositories/key_value_db/pokemon/repository.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/key_value_db/pokemon/repository.py -------------------------------------------------------------------------------- /src/repositories/relational_db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/relational_db/__init__.py -------------------------------------------------------------------------------- /src/repositories/relational_db/pokemon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/repositories/relational_db/pokemon/mapper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/relational_db/pokemon/mapper.py -------------------------------------------------------------------------------- /src/repositories/relational_db/pokemon/orm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/relational_db/pokemon/orm.py -------------------------------------------------------------------------------- /src/repositories/relational_db/pokemon/repository.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/repositories/relational_db/pokemon/repository.py -------------------------------------------------------------------------------- /src/settings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/__init__.py -------------------------------------------------------------------------------- /src/settings/db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/__init__.py -------------------------------------------------------------------------------- /src/settings/db/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/base.py -------------------------------------------------------------------------------- /src/settings/db/mongodb.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/mongodb.py -------------------------------------------------------------------------------- /src/settings/db/mysql.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/mysql.py -------------------------------------------------------------------------------- /src/settings/db/postgres.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/postgres.py -------------------------------------------------------------------------------- /src/settings/db/redis.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/redis.py -------------------------------------------------------------------------------- /src/settings/db/sqlite.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/settings/db/sqlite.py -------------------------------------------------------------------------------- /src/usecases/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/usecases/__init__.py -------------------------------------------------------------------------------- /src/usecases/pokemon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/src/usecases/pokemon.py -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/api_db_test.bats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/api_db_test.bats -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/conftest.py -------------------------------------------------------------------------------- /tests/functional/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/functional/test_pokemon_evolution_scenarios.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/functional/test_pokemon_evolution_scenarios.py -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/integration/__init__.py -------------------------------------------------------------------------------- /tests/integration/test_graphql_apis.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/integration/test_graphql_apis.py -------------------------------------------------------------------------------- /tests/integration/test_rest_apis.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/integration/test_rest_apis.py -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/unit/__init__.py -------------------------------------------------------------------------------- /tests/unit/test_repository_document_db_pokemon.py: -------------------------------------------------------------------------------- 1 | # TODO: To be implemented 2 | -------------------------------------------------------------------------------- /tests/unit/test_repository_key_value_db_pokemon.py: -------------------------------------------------------------------------------- 1 | # TODO: To be implemented 2 | -------------------------------------------------------------------------------- /tests/unit/test_repository_relational_db_pokemon.py: -------------------------------------------------------------------------------- 1 | # TODO: To be implemented 2 | -------------------------------------------------------------------------------- /tests/unit/test_usecase_pokemon.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cdddg/py-clean-arch/HEAD/tests/unit/test_usecase_pokemon.py --------------------------------------------------------------------------------