Skip to content

Latest commit

 

History

History
52 lines (46 loc) · 4.75 KB

README.md

File metadata and controls

52 lines (46 loc) · 4.75 KB

REST-API сервис для управления фильмотекой

Предисловие

Перечисленные ниже требования рекомендуется выполнять параллельно с изучением основного материала по Flask и NGINX. Например, вы изучили, как создавать модели - примените эти знания к проекту, создав необходимые модели, после чего создайте миграции к моделям и примените их. По ходу изучения вы будете сталкиваться с тем, что полученных знаний недостаточно, чтобы применить их к проекту, но не волнуйтесь, очень скоро (по ходу изучения следующих пунктов) это изменится.

Функциональные требования

  1. Поиск фильмов должен давать результаты по частичному совпадению.
  2. Для вывода результатов поиска необходимо использовать пагинацию (по-умолчанию - 10 результатов на одну страницу).
  3. Операции с фильмами:
  • добавлять может только авторизованный пользователь
  • удалять может только авторизованный пользователь, который его добавил или администратор
  • редактировать может только авторизованный пользователь, который его добавил или администратор
  • запрашивать может кто угодно
  1. Фильмы можно фильтровать по:
  • жанрам
  • диапазону годов выхода
  • режиссёру
  1. Фильмы можно сортировать по:
  • рейтингу
  • дате выхода
  1. Атрибуты фильма:
  • название
  • жанры
  • дата выхода
  • режиссёр
  • описание (необязательное для заполнения поле)
  • рейтинг (0-10)
  • постер
  • пользователь, добавивший фильм
  1. При удалении режиссёра фильм НЕ должен быть удален, вместо этого нужно установить director = ‘unknown’.
  2. Загрузка данных в БД должна сопровождаться валидациями по здравому смыслу (например, год выхода - должен быть числом, а не строкой).
  3. При ошибках нужно выдавать адекватные сообщения и коды ошибок, чтобы пользователь API мог понять, что является причиной ошибки.
  4. Должна присутствовать авторизация (рекомендуется использовать Flask-Login).

Требования к проекту

  1. Основа приложения - Flask Framework.
  2. Основной функционал должен быть покрыт тестами.
  3. Обязательным пунктом является применение Docker Compose.
  4. В качестве базы данных должен быть использован PostgreSQL.
  5. База данных должна быть нормализована и находиться минимум в 3-й нормальной форме.
  6. При написании кода должен соблюдаться code-style.
  7. Использование type hint активно приветствуется.
  8. В качестве виртуального окружения предпочтительней использовать один из этих инструментов: pipenv / poetry / pyenv.
  9. Запросы на ваш backend должны проксироваться через Nginx.
  10. При разработке использовать любой статический анализатор кода на выбор: pylint / prospector / black и т.д.
  11. В ходе разработки обязательно используется Git Flow, проект делится на Pull Request-ы, заранее прикидывается план задач, которые будете делать и оформлять в виде PR.
  12. Проект должен сопровождаться логгированием.
  13. Проект должен быть документирован при помощи swagger.