Тестовое задание для компании Правое полушарие Интроверта.
Разработать API в котором 3 эндпоинта.
Есть одна сущность. При старте сервера все записи из базы подгружаются в оперативку,
Реализовать:
- Эндпоинт удаления - удаляет в базе запись
- Эндпоинт изменения - изменяет в базе запись
- Эндпоинт показать - показывает текущий актуальный список
- Процесс, который подгружает записи с базы в оперативку, с определенным интервалом
Предпочтительная база: MongoDB
- proto-файлы сервиса - api/v1
- swagger-файл для REST API - gen/api/v1/product.swagger.json. Посмотреть можно вставив содержимое файла в редактор https://editor.swagger.io/
Для запуска должен быть установлен Docker и docker-compose.
- Создать
.env
файл с конфигурацией на основе.env.dist
файла. По-умолчанию заданы оптимальные значения с которым API запустится и будет работать. При желании переменные можно подкорректировать.# bash cp .env.dist .env
- Собрать контейнеры
docker-compose build
- Заполнить базу данных тестовыми данными:
docker-compose run --rm app /usr/local/bin/populate # Creating network "preavor-polusharie-introverta-test_default" with the default driver # Creating preavor-polusharie-introverta-test_mongodb_1 ... done # Creating preavor-polusharie-introverta-test_jaeger_1 ... done # Creating preavor-polusharie-introverta-test_app_run ... done # Created 50000 products
- Запустить контейнеры:
docker-compose up
После успешного выполнения этих действий будет запущено:
- GRPC-сервер на порту
50051
- GRPC Gateway (REST API) сервер на порту
8000
- MongoDB на порту
27017
Jaeger UI
c трейсами запросов по адресу http://localhost:16686/
В проекте присутствует Makefile
с полезными командами.
make lint
- запуститgolangci-lint
для проектаmake protogen
- запуститbuf generate
и сгенерит сервер из proto-файлов