Skip to content

vildan-valeev/melvad_test

Repository files navigation

Тестовое задание Golang melvad.com

Необходимо создать консольное приложение-сервис, которое принимает HTTP POST запросы:


  • по пути POST /redis/incr с json вида
{
  "key": "age",
  "value": 19
}

подключается к Redis DB (хост и порт указываются при запуске в параметрах -host и -port), инкрементирует значение по ключу, указанному в "key" на значение из "value", и возвращает его в виде:

{
  "value": 20
}

  • по пути POST /sign/hmacsha512 с json вида
{
  "text": "test",
  "key": "test123"
}

и возвращает HMAC-SHA512 подпись значения из "text" по ключу "key" в виде hex строки


  • по пути POST /postgres/users с json вида
{
  "name": "Alex",
  "age": 21
}

создает в базе данных PostgreSQL таблицу users, если она не существует, добавляет в нее строку ("Alex", 21) и возвращает идентификатор добавленного пользователя в виде

{
  "id": 1
}

Дополнительные условия:

  • можно использовать любые библиотеки для работы с http, Redis DB и PostgreSQL;
  • приложение должно быть протестировано unit-тестами (любой тестовый фреймворк);
  • результат нужно разместить на github;
  • наибольшее внимание следует уделить качеству коду.

Запуск

Локально - Redis и Postgres запустятся в контейнере, а приложение на сразу сбилдится и запустится локально (хост и порт для редиса задаются из Make-файла)

  • 1 make up_local_infra
  • 2 make migrate
  • 3 make up_local_app

В Docker - все вместе в докер контейнерах(хост и порт для редиса задаются из докерфайла в Entrypoint)

    make up

Если не получается запустить...

    make help

Тест

    make test
    make lint