Skip to content

flew1x/ingry.tech_test_task

Repository files navigation

Создать репозиторий и в процессе туда комиттить. По результату выслать ссылку.

Тестовое задание 1: Разработка REST API

Описание: Создайте простое REST API для управления библиотекой книг. API должен поддерживать следующие операции:

  • Получить список всех книг (GET /books)
  • Получить информацию о конкретной книге по ID (GET /books/{id})
  • Добавить новую книгу (POST /books)
  • Обновить информацию о книге по ID (PUT /books/{id})
  • Удалить книгу по ID (DELETE /books/{id})

Требования:

  • Использовать фреймворк ECHO.
  • Данные книг должны храниться в памяти (можно использовать слайс или мапу).
  • Книги должны содержать следующие поля: ID, название, автор, год издания.

Тестовое задание 2: Использование GORM и работа с базами данных

Описание: Создайте приложение, использующее GORM для работы с базой данных. Реализуйте ту же функциональность, как в первом задании, но теперь данные должны храниться в базе данных MySQL или PostgreSQL.

Требования:

  • Настроить подключение к базе данных с использованием GORM.
  • Реализовать миграции для создания таблицы книг.
  • Обработать все возможные ошибки, возникающие при взаимодействии с базой данных.
  • Предоставить скрипт для создания базы данных и необходимые настройки для её использования.

Тестовое задание 3: Обработка ошибок и Middleware

Описание: Расширьте API для управления библиотекой книг, добавив middleware для обработки ошибок. Все ошибки должны возвращаться клиенту в формате JSON с соответствующим статусом HTTP.

Требования:

  • Создайте middleware для глобальной обработки ошибок.
  • Если происходит ошибка, возвращайте ответ с статусом 400 или 500 в зависимости от характера ошибки.
  • Все сообщения об ошибках должны содержать понятное описание.

Тестовое задание 4: Написание тестов

Описание: Напишите тесты для вашего REST API, используя библиотеку testing и net/http.

Требования:

  • Использовать Go testing package.
  • Написать тесты для всех ваших эндпоинтов (GET, POST, PUT, DELETE).
  • Убедитесь, что тесты покрывают успешные сценарии и обработку ошибок.
  • Добавить команду для запуска тестов в README.

Тестовое задание 5: Документация и CI/CD

Описание: Создайте документацию для вашего API с использованием Swagger или аналогичного инструмента.

Требования:

  • Оснастить свой проект документацией, которая показывает, как использовать каждый эндпоинт.
  • Настроить базовую CI/CD конфигурацию в GitLab для автоматической сборки и тестирования вашего приложения при каждом пуше в репозиторий.