Skip to content

jirafa27/wallet-api

Repository files navigation

Wallet API

Описание

Этот проект представляет собой REST API для управления балансом кошельков.
Поддерживаются операции пополнения (DEPOSIT), снятия (WITHDRAW) и получения информации о кошельке.

API разработано с использованием Flask и PostgreSQL.
Система запускается в Docker с помощью docker-compose.

Технологии

  • Backend: Flask + SQLAlchemy
  • Database: PostgreSQL
  • Migrations: Flask-Migrate
  • Containerization: Docker, Docker Compose
  • Testing: Pytest

Установка и запуск

git clone https://github.com/jirafa27/wallet-api.git
cd wallet-api

Для работы программы требуется создать в корне проекта .env файл Пример .env файла

POSTGRES_DB=wallets_db
POSTGRES_USER=user
POSTGRES_PASSWORD=password
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
TEST_BASE_URL=http://app:5000/api/v1/wallets

Сборка и запуск контейнеров

Собрать контейнеры:

docker-compose build

Запустить сервисы в фоновом режиме:

docker-compose up -d

После запуска приложение будет доступно по адресу: http://127.0.0.1:5000

Проверить работу API: curl -X GET http://127.0.0.1:5000/

Для запуска тестов

docker-compose run --rm app pytest -vv

API Эндпоинты

1. Создать кошелек

POST /api/v1/wallets

{
  "status": "success",
  "message": "Wallet created successfully",
  "wallet": {
    "UID": "d0a1e9d6er",
    "amount": 0.0
  }
}

2. Получить информацию о кошельке

GET /api/v1/wallets/{wallet_uid}

{
  "status": "success",
  "wallet": {
    "UID": "d0a1e9d6ww",
    "amount": 1000.0
  }
}

3. Провести операцию (пополнение или снятие)

POST /api/v1/wallets/{wallet_uid}/operation

Тело запроса:

{
  "operation_type": "DEPOSIT",
  "amount": 500
}

Пример ответа:

{
  "UID": "doa1eldlsd",
  "amount": 1500.0,
  "operation": "DEPOSIT",
  "status": "success"
}

4. Получить список всех кошельков

GET /api/v1/wallets

Пример ответа:

{
  "status": "success",
  "wallets": [
    {
      "UID": "doa1eldlsd",
      "amount": 1000.0
    },
    {
      "UID": "sfdagfgdfb",
      "amount": 500.0
    }
  ]
}

5. Удалить кошелек

DELETE /api/v1/wallets Пример запроса:

{
  "wallet_uid": "d0a1e9d6qq"
}

Пример ответа:

{
    "message": "Wallet deleted successfully",
    "status": "success",
    "wallet": {
        "UID": "TTgdcZ835r",
        "amount": 100.0
    }
}

About

REST API for wallet balance management (deposit/withdraw). Stack: Flask, SQLAlchemy, PostgreSQL, Docker, pytest

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors