- PHP 8+
- Laravel 9+
- PostgreSQL
Необходимо на базе фреймворка Laravel сделать REST API приложение которое реализует следующий функционал:
- Обязательные поля:
- email (проверка на валидность формата)
- username (только символы латинского алфавита)
- Необязательные поля:
- Имя
Здесь и далее пользователь является авторизованным, если в запросе присутствует заголовок User-Id со значением равным ID пользователя от которого должно выполняться действие. В ответе должны возвращаться следующие данные:
- id
- username
- name
Пользователь должен иметь возможность редактировать свои username и имя.
В системе не может быть зарегистрировано два одинаковых email или username.
2. Работа с сервисом The Movie Database:
2.1. Раз в 3 часа собирать 5 страниц фильмов из Discover
Сохранять title и poster_path В базе не должно быть повторяющихся фильмов
3.1. Вывод всех сохраненных в базе фильмов с постраничной навигацией. По дефолту отдавать первые 15 фильмов
3.4. Должен быть отдельный эндпоинт для вывода всех фильмов, которых у пользователя нет в избранном. В запросе должен передаваться query параметр loaderType. Должно быть реализовано 2 сервиса по поиску фильмов которых нет в избранном:
(loaderType=sql)
3.4.2. В памяти приложения. Загрузить список всех фильмов и список избранных фильмов пользователя, и среди всех найти те, которых нет в избранном
(loaderType=inMemory)
Структуру базы, эндпоинты, успешные и неуспешные ответы сервиса продумать самостоятельно.
В случае возникновения исключений во время запроса, должен возвращаться JSON ответ {“error”: “INTERNAL_ERROR”}
и статус 500