Простой пример сервиса, который может отвечать за работу с платежами в вашем проекте.
- Python: 3.11.5
- NATS
- FastStream
- Dishka
- SQLAlchemy
- PostgreSQL
- Alembic
- Docker
- Клонируйте репозиторий на свой компьютер, используя эту команду:
- Создайте файл
.settings.ymlв папкеconfig_distпо примеруexample_settings.yml. - Введите команду
docker compose up. - После запуска примените миграции к БД, используя команду:
git clone https://github.com/ZoRex15/PaymentSystemExample.gitalembic upgrade head- Примечание 1: Пример запросов показан на Windows в CMD.
- Примечание 2: В запросах не используйте
counteragent_id, который равен одному, так как этот пользователь зарезервирован системой как CASH_BOOK.
nats request payments.counteragent.balance.replenishment "{\"counteragent_id\": 2, \"amount\": 350}" -H "X-Idempotency-Key:f47ac10b-58cc-4372-a567-0e02b2c3d479"nats request payments.counteragent.balance.withdrawal "{\"counteragent_id\": 2, \"amount\": 50}" -H "X-Idempotency-Key:f47ac10b-58cc-4372-a567-0e02b2c3d472"nats request payments.counteragent.balance "{\"counteragent_id\": 2}"📁 PaymentSystemExample/ ├── 📁 app/ │ ├── __main__.py │ ├── 📁 core/ │ │ ├── __init__.py │ │ ├── 📁 interfaces/ │ │ │ ├── __init__.py │ │ │ └── 📁 repository/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── posting.py │ │ │ └── transaction_log.py │ │ ├── 📁 models/ │ │ │ ├── __init__.py │ │ │ ├── 📁 dto/ │ │ │ │ ├── __init__.py │ │ │ │ ├── posting.py │ │ │ │ └── transaction_log.py │ │ │ ├── 📁 enum/ │ │ │ │ ├── __init__.py │ │ │ │ ├── db.py │ │ │ │ └── reply.py │ │ │ └── 📁 messages/ │ │ │ ├── __init__.py │ │ │ ├── incoming_messages.py │ │ │ └── outgoing_messages.py │ │ └── 📁 service/ │ │ ├── __init__.py │ │ ├── payments.py │ │ └── posting.py │ └── 📁 infrastructure/ │ ├── __init__.py │ ├── 📁 broker/ │ │ ├── __init__.py │ │ ├── 📁 consumers/ │ │ │ ├── __init__.py │ │ │ ├── payment.py │ │ │ └── payment_info.py │ │ └── 📁 middlewares/ │ │ ├── __init__.py │ │ ├── check.py │ │ └── logging.py │ ├── 📁 config/ │ │ ├── __init__.py │ │ ├── logging.py │ │ ├── main.py │ │ ├── 📁 models/ │ │ │ ├── __init__.py │ │ │ └── models.py │ │ └── 📁 service/ │ │ ├── __init__.py │ │ └── parsers.py │ ├── 📁 db/ │ │ ├── __init__.py │ │ ├── holder.py │ │ ├── 📁 migration/ │ │ │ ├── README │ │ │ ├── env.py │ │ │ ├── script.py.mako │ │ │ └── 📁 versions/ │ │ │ ├── 0d59302e6c47_db.py │ │ ├── 📁 models/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── posting.py │ │ │ └── transaction_log.py │ │ └── 📁 repository/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── posting.py │ │ └── transaction_log.py │ └── 📁 di/ │ ├── __init__.py │ ├── config.py │ ├── db.py │ └── fast_stream.py ├── 📁 config_dist/ │ ├── .settings.yml │ ├── example_settings.yml │ └── logging.yml ├── 📁 nats_docker_data/ │ ├── 📁 config/ │ │ └── server.conf │ └── 📁 data/ │ └── 📁 jetstream/ ├── alembic.ini ├── Dockerfile ├── docker-compose.yml └── requirements.txt
Это основная папка приложения.
Содержит ключевые компоненты и бизнес-логику.
- 📁 interfaces/: Определяет контракты для взаимодействия между различными компонентами.
- 📁 interfaces/repository/: Содержит интерфейсы для доступа к данным.
base.py: Базовый интерфейс, от которого наследуются другие.posting.py: Интерфейсы для операций с таблицей Posting.transaction_log.py: Интерфейсы для операций с таблицей TransactionLog.
- 📁 models/: Содержит модели данных и их представления.
- 📁 models/dto/: Содержит DTO для передачи данных.
posting.py: DTO для таблицы Posting.transaction_log.py: DTO для TransactionLog.
- 📁 models/enum/: Содержит перечисления.
db.py: Перечисления, связанные с базой данных.reply.py: Перечисления для ответов системы.
- 📁 service/: Содержит бизнес-логику и сервисы.
payments.py: Логика обработки платежей.posting.py: Логика обработки запросов, связанных с таблицей Posting.
Содержит инфраструктурные компоненты, такие как конфигурация, БД и т. д.
- 📁 broker/: Компоненты для работы с брокером сообщений.
- 📁 consumers/: Реализации потребителей сообщений.
payment.py: Обработка запросов, связанных с платежами.payment_info.py: Обработка запросов на получение информации о платежах.
- 📁 middlewares/: Промежуточные обработчики.
check.py: Проверка запроса на наличие параметра reply.logging.py: Логирование событий.
- 📁 consumers/: Реализации потребителей сообщений.
- 📁 config/: Логика работы с конфигурационными файлами.
logging.py: Настройка логирования.main.py: Парсинг файла с настройками.
- 📁 db/: Компоненты для работы с базой данных.
holder.py: Класс, который содержит все репозитории.- 📁 migration/: Миграции для БД.
- 📁 models/: Модели таблиц для БД.
- 📁 repository/: Реализации репозиториев для работы с данными.
- 📁 di/: Компоненты для внедрения зависимостей.
config.py: Провайдер для создания конфигурации.db.py: Провайдер для создания зависимостей для работы с БД.fast_stream.py: Провайдер для создания зависимостей FastStream.