Приложение предоставляет REST API для работы с балансом пользовательских кошельков.
git clone git@github.com:IlyaShaposhnikov/wallet-api.git
cd wallet-api
# (Для локальной разработки вне Docker, если нужно)
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtСоздайте файл .env в корне проекта, основываясь на примере .env.example. Это позволит вам настроить параметры подключения к базе данных.
Если файл .env отсутствует, будут использованы значения по умолчанию, определённые в app/config.py.
docker-compose up --buildПриложение будет доступно по адресу: http://localhost:8080 (http://127.0.0.1:8080)
После запуска откройте: http://localhost:8080/docs (http://127.0.0.1:8080/docs)
Получение баланса
GET /api/v1/wallets/{wallet_id}
Изменение баланса
POST /api/v1/wallets/{wallet_id}/operation
Тело запроса:
{
"operation_type": "DEPOSIT" или "WITHDRAW",
"amount": 1000.50
}Запуск тестов
docker-compose up tests- FastAPI - асинхронный веб-фреймворк
- SQLAlchemy 2.0 + asyncpg - асинхронная работа с PostgreSQL
- Alembic - миграции базы данных
- Docker & Docker Compose - контейнеризация
- Pytest + httpx - тестирование
- Pydantic v2 - валидация данных
Приложение гарантирует корректную работу при параллельных запросах благодаря:
- Транзакциям уровня READ COMMITTED
- Блокировкам SELECT FOR UPDATE
- Атомарным операциям изменения баланса
wallet-api/
├── app/
│ ├── repositories/ # Слой доступа к данным
│ ├── schemas.py # Pydantic-схемы
│ ├── models.py # Модели SQLAlchemy
│ ├── database.py # Настройка БД
│ ├── config.py # Конфигурация
│ └── main.py # Основное приложение
├── tests/ # Тесты
├── alembic/ # Миграции
├── scripts/ # Вспомогательные скрипты
├── docker-compose.yml # Docker-оркестрация
└── Dockerfile # Docker образ
Шапошников Илья ilia.a.shaposhnikov@gmail.com