Skip to content

BurtsE/MerchShop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание задачи

Необходимо реализовать сервис, который позволит сотрудникам обмениваться монетками и приобретать на них мерч. Каждый сотрудник должен иметь возможность видеть:

  • Список купленных им мерчовых товаров
  • Сгруппированную информацию о перемещении монеток в его кошельке, включая:
    • Кто ему передавал монетки и в каком количестве
    • Кому сотрудник передавал монетки и в каком количестве Количество монеток не может быть отрицательным, запрещено уходить в минус при операциях с монетками.

Общие вводные

Мерч — это продукт, который можно купить за монетки. Всего в магазине доступно 10 видов мерча. Каждый товар имеет уникальное название и цену. Ниже приведён список наименований и их цены.

Название Цена
t-shirt 80
cup 20
book 50
pen 10
powerbank 200
hoody 300
umbrella 200
socks 10
wallet 50
pink-hoody 500

Предполагается, что в магазине бесконечный запас каждого вида мерча.

Требования по стеку

Язык сервиса: Go.

База данных: PostgreSQL.

Для деплоя зависимостей и самого сервиса используйте Docker Compose. Порт доступа к сервису должен быть 8080 и быть доступен снаружи как localhost:8080.

Оформление решения

  • Запуск сервиса производится командой docker compose -f ./deploy/Compose.yml up из корневой директории
  • Для запуска интеграционных тестов необходимо открыть терминал в директории e2e и запустить команду go test.
    • Для тестов сервисы запускаются в docker контейнерах.
    • Реализованы E2E-тесты на сценарий покупки мерча, передачи монеток другим сотрудникам, информации о пользователе.
  • Результаты стресс-тестов находятся в директории docs/performance
    • Во время второго тестирования также был запущен клиент, создающий записи в БД
  • Необходимые переменные окружения должны быть определены в .env файлах:
    • В корневом каталоге для запуска сервиса
    • В каталоге e2e для запуска тестов

Пример необходимых переменных окружения:

  • POSTGRES_DB=merch_shop
  • POSTGRES_USER=admin
  • POSTGRES_PASSWORD=123
  • POSTGRES_PORT=5432
  • SECRET_KEY="my-secret-key"
  • ENV=development
  • APPLICATION_PORT=8080

Для доступа к апи с еобходимостью авторизации необходим http заголовок Authorization вида:

Bearer {Токен}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published