Categorygithub.com/Angstreminus/exchanger
module
0.0.0-20240430113815-fe9d553798f7
Repository: https://github.com/angstreminus/exchanger.git
Documentation: pkg.go.dev

# README

Задание

Суть задания

Написать REST сервис по расчету всех вариантов размена для указанной суммы денег. На вход принимается HTTP запрос в формате:

{ "amount": 400, "banknotes": [5000, 2000, 1000, 500,200, 100, 50]}

amount – сумма денег banknotes – доступные номиналы банкнот

Пример формата ответа: { "exchanges":[[200, 200], [200, 100, 100], [200, 100, 50, 50], [200, 50, 50, 50, 50], [100, 100, 100, 100],[100, 100, 100, 50, 50], [100, 100, 50, 50, 50, 50], [100, 50, 50, 50, 50, 50, 50], [50, 50, 50, 50, 50, 50, 50, 50]]}

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

  • конфигурация (хост, порт, уровень логирования)
  • graceful shutdown
  • оформлен в общедоступном git репозитории

Комментарии к решению

  1. Использован язык Go(v1.22)
  2. 3-rd party логгер zap(uber) 2.1. Поэтому поддерживаются 2 уровня логирования:
    • development (debug+)
    • production (info+) default
  3. Стандартный маршрутизатор net/http ServeMux
  4. Организован примитивный процесс CI/CD github actions
  5. Для конфигурирования использован .env
  6. Код слоя бизнес-логики был покрыт unit-тестами по методике (table testing)
  7. Реализован graceful shutdown
ПутьМетодОписание
/localhost:8080/exchangePOSTМетод создание разбиения валюты

Инструкция по запуску приложения

Убедитесь что у вас установлен Go версии 1.22+

  1. Необходимо склонировать проект:

git clone https://github.com/Angstreminus/exchanger.git

2. Переходим в директорию cmd и запускаем cd exchanger go run cmd/main.go

  1. Для оценки степени покрытия тестами вводим команду: go test -short -count=1 -race -coverprofile=coverage.out ./...

# Packages

No description provided by the author
No description provided by the author