Skip to content

niten2/todo_test_task_api

Repository files navigation

Выполненное тестовое задание для заказчика реализующее REST API для блога.

Требования:

Нужны модели:

Post – записи в блоге, поля:

title -- строковое
body -- строковое
author -- ссылка на автора
published_at: дата-время размещения записи

Поля title и body -- обязательные для заполнения

Comment – комментарии поля:

body -- строковое
author -- ссылка на автора
published_at: дата-время размещения коментария

Поле body -- обязательное для заполнения

Поскольку у нас есть авторы, нужна модель в которой мы будем их хранить

User – пользователи поля:

nickname:
email:
password:

Реализовать эндпойнт по авторизации. Как его сделать up to you.

Реализовать эндпойнты: POST /api/v1/posts.json

отправляем:
  title
  body
  published_at

в ответ получаем json с полями
  id
  title
  body
  published_at
  author_nickname

если в запросе не передали published_at, то нужно подставлять текущий момент времени.

если передали не все поля, то ответ должен содержать одно поле
  errors -- массив ошибок

GET /api/v1/posts/:post_id.json

получить post по его id

поля в ответе как в эндпойнте POST /api/v1/posts.json

GET /api/v1/posts.json

отправляем:
  page
  per_page

получаем список записей отсортированных полю published_at по убыванию
поля каждой записи как в эндпойнте POST /api/v1/posts.json

В заголовках ответа нужно передать общее количество страниц и записей

Эндпойнты для комментариев можно не делать

Прочие требования:

код приложения ruby on rails 4.2.6
СУБД -- Postgresql 9.4
Для генерации json использовать jbuilder
В таблицах нужно указывать все необходимые индексы
Код моделей и контроллеров нужно покрыть тестами.
Для тестирования использовать rspec 3.4
Так же нужно упаковать приложение в docker образ,  так что приложение должно получать данные для соединения с базой данных через переменные окружения

Часть 2. Сделать аналитический отчёт.

POST /api/v1/reports/by_author.json

start_date -- начало интервала
end_date -- конец интервала
email -- куда отправить отчёт

ответ:

поля: message: “Report generation started”

Эндпойнт добавляет задачу на генерацию отчёта в очередь, очередь обрабатывается отдельным процесом. Готовый отчёт отправляется на email указанный в задаче.

Отчёт должен представлять собой таблицу со столбцами:

nickname,
email,
количество записей за период,
количество комментариев за период.

Строки в отчёте отсортированы по значению вычисляемому так (количество постов + количество комментариев/10).

Таблицу можно оформить как в виде html таблицы так и при помощи ASCII символов.

Для этого задания нужно заполнить базу тестовыми данными использовать gem faker.

Результат нужно разместить на github.

Releases

No releases published

Packages

No packages published

Languages