Требуется создать прототип API-only приложения для онлайн-курсов с реализацией следующих сущностей:
- Курс
- Автор
- Компетенция
-
Курс:
- Может содержать 0..n компетенций.
- Каждый курс должен иметь одного автора.
- При удалении автора курсу должен быть назначен новый автор (можно назначить случайным образом).
-
Автор:
- Может иметь 0..n курсов.
-
Компетенции:
- Каждая компетенция может быть связана с несколькими курсами.
Необходимо реализовать CRUD операции для каждой из сущностей (Курс, Автор, Компетенция).
- Для прототипа не требуется реализовывать авторизацию.
- API request должно быть покрыто тестами с помощью библиотеки
rswag, а документация должна быть сгенерирована этой библиотекой в Swagger. - Используемая версия Ruby on Rails: 6.0 или выше.
- Используемая база данных: PostgreSQL.
-
Swagger API:
- Документация должна быть доступна через Swagger и поддерживать отправку тестовых запросов.
- Документация должна быть сгенерирована с помощью
rswag.
-
API тесты:
- Все тесты должны проходить без ошибок и покрывать основные операции API.
-
Начальные данные:
- Начальные данные должны быть установлены с помощью команды:
bin/rails db:seed
-
Модели:
Course(Курс)User(Является автором)Competency(Компетенция)
-
Контроллеры:
- Контроллеры для каждой сущности: Курс, Пользователь, Компетенция.
-
Роуты:
- RESTful маршруты для CRUD операций для каждой сущности.
-
Тесты:
- Тесты для API с использованием
rswagи проверка документации Swagger.
- Тесты для API с использованием
- git clone git@github.com:supronva-github/online_courses_api.git
- cd online_courses_api
- docker compose up -d
- go to http://127.0.0.1:3000/api-docs/index.html