├── .dockerignore ├── .env.template ├── .github └── workflows │ └── test.yaml ├── .gitignore ├── .hadolint.yaml ├── .pre-commit-config.yaml ├── .pylintrc ├── .ruff.toml ├── Dockerfile ├── LICENSE.md ├── README.md ├── alembic.ini ├── config ├── config.template.toml └── prod_config.template.toml ├── docker-compose.yaml ├── justfile ├── monitoring ├── grafana │ └── provisioning │ │ └── datasources │ │ └── loki.yml ├── loki │ └── config.yaml └── vector │ └── vector.toml ├── mypy.ini ├── pyproject.toml ├── src └── user_service │ ├── __init__.py │ ├── __main__.py │ ├── application │ ├── __init__.py │ ├── common │ │ ├── __init__.py │ │ ├── command.py │ │ ├── dto.py │ │ ├── event.py │ │ ├── exceptions.py │ │ ├── interfaces │ │ │ ├── __init__.py │ │ │ └── uow.py │ │ ├── pagination │ │ │ ├── __init__.py │ │ │ └── dto.py │ │ └── query.py │ └── user │ │ ├── __init__.py │ │ ├── commands │ │ ├── __init__.py │ │ ├── create_user.py │ │ ├── delete_user.py │ │ ├── set_user_full_name.py │ │ └── set_user_username.py │ │ ├── dto.py │ │ ├── events │ │ └── __init__.py │ │ ├── exceptions.py │ │ ├── interfaces │ │ ├── __init__.py │ │ └── persistence │ │ │ ├── __init__.py │ │ │ └── reader.py │ │ └── queries │ │ ├── __init__.py │ │ ├── get_user_by_id.py │ │ ├── get_user_by_username.py │ │ └── get_users.py │ ├── domain │ ├── __init__.py │ ├── common │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── entity.py │ │ ├── event.py │ │ ├── exceptions.py │ │ ├── service.py │ │ └── value_objects.py │ └── user │ │ ├── __init__.py │ │ ├── entities.py │ │ ├── events │ │ ├── __init__.py │ │ ├── full_name_updated.py │ │ ├── user_created.py │ │ ├── user_deleted.py │ │ └── username_updated.py │ │ ├── exceptions.py │ │ ├── interfaces │ │ ├── __init__.py │ │ └── repo.py │ │ ├── service.py │ │ └── value_objects │ │ ├── __init__.py │ │ ├── deletion_time.py │ │ ├── full_name.py │ │ ├── user_id.py │ │ └── username.py │ ├── infrastructure │ ├── __init__.py │ ├── config_loader.py │ ├── db │ │ ├── __init__.py │ │ ├── config.py │ │ ├── converters │ │ │ ├── __init__.py │ │ │ └── user.py │ │ ├── main.py │ │ ├── migrations │ │ │ ├── README │ │ │ ├── __init__.py │ │ │ ├── env.py │ │ │ ├── script.py.mako │ │ │ └── versions │ │ │ │ ├── 20230204-105454_2d79505fb3d2_uuid_generation.py │ │ │ │ ├── 20230204-110323_f78150d890d1_user_table.py │ │ │ │ ├── 20230604-083729_adbf32e55780_add_middle_name_column_to_users_table.py │ │ │ │ ├── 20231018-144621_36112198c668_add_deleted_at_column_to_the_users_table.py │ │ │ │ └── __init__.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── user.py │ │ ├── readers │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── user.py │ │ ├── repositories │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ └── user.py │ │ └── uow.py │ ├── event_bus │ │ ├── __init__.py │ │ ├── converters.py │ │ ├── event_bus.py │ │ ├── event_handler.py │ │ ├── events │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── full_name_updated.py │ │ │ ├── user_created.py │ │ │ ├── user_deleted.py │ │ │ └── username_updated.py │ │ └── exchanges.py │ ├── log │ │ ├── __init__.py │ │ ├── config.py │ │ ├── event_handler.py │ │ ├── main.py │ │ └── processors.py │ └── message_broker │ │ ├── __init__.py │ │ ├── config.py │ │ ├── factories.py │ │ ├── interface.py │ │ ├── main.py │ │ ├── message.py │ │ ├── message_broker.py │ │ └── uow.py │ ├── main │ ├── __init__.py │ ├── di │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── db.py │ │ ├── main.py │ │ ├── message_broker.py │ │ └── uow.py │ └── mediator │ │ ├── __init__.py │ │ ├── main.py │ │ └── utils.py │ └── presentation │ ├── __init__.py │ └── api │ ├── __init__.py │ ├── config.py │ ├── controllers │ ├── __init__.py │ ├── default.py │ ├── exceptions.py │ ├── healthcheck.py │ ├── main.py │ ├── requests │ │ ├── __init__.py │ │ └── user.py │ ├── responses │ │ ├── __init__.py │ │ ├── base.py │ │ └── orjson.py │ └── user.py │ ├── main.py │ ├── middlewares │ ├── __init__.py │ ├── context.py │ ├── main.py │ └── structlog.py │ └── providers │ ├── __init__.py │ ├── di.py │ ├── main.py │ ├── mediator.py │ └── stub.py ├── tests ├── __init__.py ├── conftest.py ├── fixtures │ ├── __init__.py │ └── db.py ├── integration │ ├── __init__.py │ └── test_stairway.py ├── mocks │ ├── __init__.py │ ├── event_mediator.py │ ├── uow.py │ ├── user_reader.py │ └── user_repo.py └── unit │ ├── __init__.py │ └── application │ ├── __init__.py │ ├── commands │ ├── __init__.py │ ├── test_create_user.py │ ├── test_delete_user.py │ ├── test_set_user_full_name.py │ └── test_set_user_username.py │ ├── conftest.py │ └── queries │ ├── __init__.py │ ├── test_get_user_by_id.py │ ├── test_get_user_by_username.py │ └── test_get_users.py └── uv.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.env.template: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.env.template -------------------------------------------------------------------------------- /.github/workflows/test.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.github/workflows/test.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.gitignore -------------------------------------------------------------------------------- /.hadolint.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.hadolint.yaml -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.pylintrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.pylintrc -------------------------------------------------------------------------------- /.ruff.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/.ruff.toml -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/README.md -------------------------------------------------------------------------------- /alembic.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/alembic.ini -------------------------------------------------------------------------------- /config/config.template.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/config/config.template.toml -------------------------------------------------------------------------------- /config/prod_config.template.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/config/prod_config.template.toml -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/docker-compose.yaml -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/justfile -------------------------------------------------------------------------------- /monitoring/grafana/provisioning/datasources/loki.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/monitoring/grafana/provisioning/datasources/loki.yml -------------------------------------------------------------------------------- /monitoring/loki/config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/monitoring/loki/config.yaml -------------------------------------------------------------------------------- /monitoring/vector/vector.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/monitoring/vector/vector.toml -------------------------------------------------------------------------------- /mypy.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/mypy.ini -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/pyproject.toml -------------------------------------------------------------------------------- /src/user_service/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "1.0.0" 2 | -------------------------------------------------------------------------------- /src/user_service/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/__main__.py -------------------------------------------------------------------------------- /src/user_service/application/__init__.py: -------------------------------------------------------------------------------- 1 | from . import user 2 | 3 | __all__ = ("user",) 4 | -------------------------------------------------------------------------------- /src/user_service/application/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/application/common/command.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/command.py -------------------------------------------------------------------------------- /src/user_service/application/common/dto.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/dto.py -------------------------------------------------------------------------------- /src/user_service/application/common/event.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/event.py -------------------------------------------------------------------------------- /src/user_service/application/common/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/exceptions.py -------------------------------------------------------------------------------- /src/user_service/application/common/interfaces/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/application/common/interfaces/uow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/interfaces/uow.py -------------------------------------------------------------------------------- /src/user_service/application/common/pagination/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/application/common/pagination/dto.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/pagination/dto.py -------------------------------------------------------------------------------- /src/user_service/application/common/query.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/common/query.py -------------------------------------------------------------------------------- /src/user_service/application/user/__init__.py: -------------------------------------------------------------------------------- 1 | from .dto import User 2 | 3 | __all__ = ("User",) 4 | -------------------------------------------------------------------------------- /src/user_service/application/user/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/commands/__init__.py -------------------------------------------------------------------------------- /src/user_service/application/user/commands/create_user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/commands/create_user.py -------------------------------------------------------------------------------- /src/user_service/application/user/commands/delete_user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/commands/delete_user.py -------------------------------------------------------------------------------- /src/user_service/application/user/commands/set_user_full_name.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/commands/set_user_full_name.py -------------------------------------------------------------------------------- /src/user_service/application/user/commands/set_user_username.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/commands/set_user_username.py -------------------------------------------------------------------------------- /src/user_service/application/user/dto.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/dto.py -------------------------------------------------------------------------------- /src/user_service/application/user/events/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/application/user/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/exceptions.py -------------------------------------------------------------------------------- /src/user_service/application/user/interfaces/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/interfaces/__init__.py -------------------------------------------------------------------------------- /src/user_service/application/user/interfaces/persistence/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/interfaces/persistence/__init__.py -------------------------------------------------------------------------------- /src/user_service/application/user/interfaces/persistence/reader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/interfaces/persistence/reader.py -------------------------------------------------------------------------------- /src/user_service/application/user/queries/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/queries/__init__.py -------------------------------------------------------------------------------- /src/user_service/application/user/queries/get_user_by_id.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/queries/get_user_by_id.py -------------------------------------------------------------------------------- /src/user_service/application/user/queries/get_user_by_username.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/queries/get_user_by_username.py -------------------------------------------------------------------------------- /src/user_service/application/user/queries/get_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/application/user/queries/get_users.py -------------------------------------------------------------------------------- /src/user_service/domain/__init__.py: -------------------------------------------------------------------------------- 1 | from . import user 2 | 3 | __all__ = ("user",) 4 | -------------------------------------------------------------------------------- /src/user_service/domain/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/domain/common/constants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/constants.py -------------------------------------------------------------------------------- /src/user_service/domain/common/entity.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/entity.py -------------------------------------------------------------------------------- /src/user_service/domain/common/event.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/event.py -------------------------------------------------------------------------------- /src/user_service/domain/common/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/exceptions.py -------------------------------------------------------------------------------- /src/user_service/domain/common/service.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/service.py -------------------------------------------------------------------------------- /src/user_service/domain/common/value_objects.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/common/value_objects.py -------------------------------------------------------------------------------- /src/user_service/domain/user/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/__init__.py -------------------------------------------------------------------------------- /src/user_service/domain/user/entities.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/entities.py -------------------------------------------------------------------------------- /src/user_service/domain/user/events/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/events/__init__.py -------------------------------------------------------------------------------- /src/user_service/domain/user/events/full_name_updated.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/events/full_name_updated.py -------------------------------------------------------------------------------- /src/user_service/domain/user/events/user_created.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/events/user_created.py -------------------------------------------------------------------------------- /src/user_service/domain/user/events/user_deleted.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/events/user_deleted.py -------------------------------------------------------------------------------- /src/user_service/domain/user/events/username_updated.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/events/username_updated.py -------------------------------------------------------------------------------- /src/user_service/domain/user/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/exceptions.py -------------------------------------------------------------------------------- /src/user_service/domain/user/interfaces/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/domain/user/interfaces/repo.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/interfaces/repo.py -------------------------------------------------------------------------------- /src/user_service/domain/user/service.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/service.py -------------------------------------------------------------------------------- /src/user_service/domain/user/value_objects/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/value_objects/__init__.py -------------------------------------------------------------------------------- /src/user_service/domain/user/value_objects/deletion_time.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/value_objects/deletion_time.py -------------------------------------------------------------------------------- /src/user_service/domain/user/value_objects/full_name.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/value_objects/full_name.py -------------------------------------------------------------------------------- /src/user_service/domain/user/value_objects/user_id.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/value_objects/user_id.py -------------------------------------------------------------------------------- /src/user_service/domain/user/value_objects/username.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/domain/user/value_objects/username.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/infrastructure/config_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/config_loader.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/config.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/converters/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/converters/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/converters/user.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/main.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/README: -------------------------------------------------------------------------------- 1 | Generic single-database configuration with an async dbapi. 2 | -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/env.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/env.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/script.py.mako: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/script.py.mako -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/versions/20230204-105454_2d79505fb3d2_uuid_generation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/versions/20230204-105454_2d79505fb3d2_uuid_generation.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/versions/20230204-110323_f78150d890d1_user_table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/versions/20230204-110323_f78150d890d1_user_table.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/versions/20230604-083729_adbf32e55780_add_middle_name_column_to_users_table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/versions/20230604-083729_adbf32e55780_add_middle_name_column_to_users_table.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/versions/20231018-144621_36112198c668_add_deleted_at_column_to_the_users_table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/migrations/versions/20231018-144621_36112198c668_add_deleted_at_column_to_the_users_table.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/migrations/versions/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/models/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/models/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/models/base.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/models/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/models/user.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/readers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/readers/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/readers/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/readers/base.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/readers/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/readers/user.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/repositories/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/repositories/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/repositories/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/repositories/base.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/repositories/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/repositories/user.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/db/uow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/db/uow.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/converters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/converters.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/event_bus.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/event_bus.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/event_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/event_handler.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/base.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/full_name_updated.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/full_name_updated.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/user_created.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/user_created.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/user_deleted.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/user_deleted.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/events/username_updated.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/events/username_updated.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/event_bus/exchanges.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/event_bus/exchanges.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/log/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/log/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/log/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/log/config.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/log/event_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/log/event_handler.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/log/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/log/main.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/log/processors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/log/processors.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/__init__.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/config.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/factories.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/factories.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/interface.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/interface.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/main.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/message.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/message.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/message_broker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/message_broker.py -------------------------------------------------------------------------------- /src/user_service/infrastructure/message_broker/uow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/infrastructure/message_broker/uow.py -------------------------------------------------------------------------------- /src/user_service/main/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/main/di/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/__init__.py -------------------------------------------------------------------------------- /src/user_service/main/di/constants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/constants.py -------------------------------------------------------------------------------- /src/user_service/main/di/db.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/db.py -------------------------------------------------------------------------------- /src/user_service/main/di/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/main.py -------------------------------------------------------------------------------- /src/user_service/main/di/message_broker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/message_broker.py -------------------------------------------------------------------------------- /src/user_service/main/di/uow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/di/uow.py -------------------------------------------------------------------------------- /src/user_service/main/mediator/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/mediator/__init__.py -------------------------------------------------------------------------------- /src/user_service/main/mediator/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/mediator/main.py -------------------------------------------------------------------------------- /src/user_service/main/mediator/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/main/mediator/utils.py -------------------------------------------------------------------------------- /src/user_service/presentation/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/presentation/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/user_service/presentation/api/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/config.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/__init__.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/default.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/default.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/exceptions.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/healthcheck.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/healthcheck.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/main.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/requests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/requests/__init__.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/requests/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/requests/user.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/responses/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/responses/__init__.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/responses/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/responses/base.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/responses/orjson.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/responses/orjson.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/controllers/user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/controllers/user.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/main.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/middlewares/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/middlewares/__init__.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/middlewares/context.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/middlewares/context.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/middlewares/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/middlewares/main.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/middlewares/structlog.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/middlewares/structlog.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/providers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/providers/__init__.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/providers/di.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/providers/di.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/providers/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/providers/main.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/providers/mediator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/providers/mediator.py -------------------------------------------------------------------------------- /src/user_service/presentation/api/providers/stub.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/src/user_service/presentation/api/providers/stub.py -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | pytest_plugins = ("tests.fixtures.db",) 2 | -------------------------------------------------------------------------------- /tests/fixtures/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/fixtures/db.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/fixtures/db.py -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/integration/test_stairway.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/integration/test_stairway.py -------------------------------------------------------------------------------- /tests/mocks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/mocks/__init__.py -------------------------------------------------------------------------------- /tests/mocks/event_mediator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/mocks/event_mediator.py -------------------------------------------------------------------------------- /tests/mocks/uow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/mocks/uow.py -------------------------------------------------------------------------------- /tests/mocks/user_reader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/mocks/user_reader.py -------------------------------------------------------------------------------- /tests/mocks/user_repo.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/mocks/user_repo.py -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/application/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/application/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/application/commands/test_create_user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/commands/test_create_user.py -------------------------------------------------------------------------------- /tests/unit/application/commands/test_delete_user.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/commands/test_delete_user.py -------------------------------------------------------------------------------- /tests/unit/application/commands/test_set_user_full_name.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/commands/test_set_user_full_name.py -------------------------------------------------------------------------------- /tests/unit/application/commands/test_set_user_username.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/commands/test_set_user_username.py -------------------------------------------------------------------------------- /tests/unit/application/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/conftest.py -------------------------------------------------------------------------------- /tests/unit/application/queries/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/application/queries/test_get_user_by_id.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/queries/test_get_user_by_id.py -------------------------------------------------------------------------------- /tests/unit/application/queries/test_get_user_by_username.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/queries/test_get_user_by_username.py -------------------------------------------------------------------------------- /tests/unit/application/queries/test_get_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/tests/unit/application/queries/test_get_users.py -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SamWarden/user_service/HEAD/uv.lock --------------------------------------------------------------------------------