Установка проекта:
- Копировать .env.example -> .env
php artisan key:generate- Настроить соединение с БД (или использовать готовое на sqlite)
php artisan migrate:fresh --seed- сид для создания хоть одного пользователя, чтобы новости/посту было к кому крепитьсяphp artisan storage:link- чтобы загружаемые с видео-постом файлы были доступны по ссылке
Проверка работы: php artisan test
Документация: /docs/api
- 403 / 404 статусы обрабатываются через отлов исключений в
/bootstrap/app.php - Тесты проверяют работоспособность функционала, корректность структур ответов, а так же статусы ошибок при "неправильных" запросах
- Некоторые вещи, вроде передачи
user_id(ID "авторизованного" пользователя) сделаны из-за условности (отсутствия авторизации), выглядело бы лучше на реальных кейсах - На практике я видел лишь раз реальное и целесообразное применение сервисных/репозиторных слоёв, понимаю их значение, но оно обычно нужно уже на больших и серьёзных проектах. Здесь использовал ради практики
- Комментарии добываются по отдельному роуту, куда передаётся entity_type и entity_id - для универсальности применения
Тестовое задание Задача: Реализовать простую систему комментариев к контенту. Для проверки достаточно сделать API, шаблоны делать не нужно.
Вводные: Сущности – Новость, Видео Пост, Пользователь, Комментарий На комментарии можно отвечать – это является отдельным комментарием, как и отвечать на комментарий к комментарию и т.д.
Необходимые API: Создание/чтение видео постов, новостей. Поля – название, описание (к пользователю не привязываем, в рамках тестового это не играет роли) CRUD комментариев от лица пользователя к видео посту/новости/комментарию
Основные требования: При чтении Новости/Видео Поста API должно отдавать список комментариев с курсорной пагинацией
Технические требования: PHP 8.2+, Laravel 11+, MySQL 8+. Для решения задачи можно использовать сторонние библиотеки если в них есть смысл, решение загрузить на GitHub.
- Новости
- Создание
- Перенести crud операции в сервисы
- Комментарии
- Пагинация
- Создание
- Редактирование
- Удаление
- Видео посты
- Список
- Привязка файла
- Создание