Создать репозиторий и в процессе туда комиттить. По результату выслать ссылку.
Описание: Создайте простое REST API для управления библиотекой книг. API должен поддерживать следующие операции:
- Получить список всех книг (GET /books)
- Получить информацию о конкретной книге по ID (GET /books/{id})
- Добавить новую книгу (POST /books)
- Обновить информацию о книге по ID (PUT /books/{id})
- Удалить книгу по ID (DELETE /books/{id})
Требования:
- Использовать фреймворк ECHO.
- Данные книг должны храниться в памяти (можно использовать слайс или мапу).
- Книги должны содержать следующие поля: ID, название, автор, год издания.
Описание: Создайте приложение, использующее GORM для работы с базой данных. Реализуйте ту же функциональность, как в первом задании, но теперь данные должны храниться в базе данных MySQL или PostgreSQL.
Требования:
- Настроить подключение к базе данных с использованием GORM.
- Реализовать миграции для создания таблицы книг.
- Обработать все возможные ошибки, возникающие при взаимодействии с базой данных.
- Предоставить скрипт для создания базы данных и необходимые настройки для её использования.
Описание: Расширьте API для управления библиотекой книг, добавив middleware для обработки ошибок. Все ошибки должны возвращаться клиенту в формате JSON с соответствующим статусом HTTP.
Требования:
- Создайте middleware для глобальной обработки ошибок.
- Если происходит ошибка, возвращайте ответ с статусом 400 или 500 в зависимости от характера ошибки.
- Все сообщения об ошибках должны содержать понятное описание.
Описание: Напишите тесты для вашего REST API, используя библиотеку testing и net/http.
Требования:
- Использовать Go testing package.
- Написать тесты для всех ваших эндпоинтов (GET, POST, PUT, DELETE).
- Убедитесь, что тесты покрывают успешные сценарии и обработку ошибок.
- Добавить команду для запуска тестов в README.
Описание: Создайте документацию для вашего API с использованием Swagger или аналогичного инструмента.
Требования:
- Оснастить свой проект документацией, которая показывает, как использовать каждый эндпоинт.
- Настроить базовую CI/CD конфигурацию в GitLab для автоматической сборки и тестирования вашего приложения при каждом пуше в репозиторий.