Skip to content

Repository files navigation

Система комментариев к контенту

RESTful API для системы комментариев к новостям и видео постам с поддержкой вложенных комментариев и курсорной пагинации.

Технологический стек

  • PHP 8.2+
  • Laravel 11
  • MySQL 8+
  • Docker & Docker Compose

Архитектура

Проект следует принципам Clean Architecture:

  • Domain Layer: Бизнес-логика, entities, Value Objects
  • Application Layer: Actions (use cases), DTOs, ports, etc
  • Infrastructure Layer: Адаптеры
  • UI Layer: Контроллеры, CLI команды Request классы, Resources

Установка и запуск

Через Docker Compose

  1. Клонируйте репозиторий
  2. Скопируйте .env.example в .env (если нужно)
  3. Запустите контейнеры:
docker-compose up -d
  1. Выполните миграции:
docker-compose exec app php artisan migrate
  1. API будет доступен по адресу: http://localhost/api

API Endpoints

Новости

  • POST /api/news - Создать новость
  • GET /api/news/{id}?cursor={cursor}&limit={limit} - Получить новость с комментариями

Видео посты

  • POST /api/video-posts - Создать видео пост
  • GET /api/video-posts/{id}?cursor={cursor}&limit={limit} - Получить видео пост с комментариями

Комментарии

  • POST /api/comments - Создать комментарий
  • GET /api/comments/{id} - Получить комментарий
  • PUT /api/comments/{id} - Обновить комментарий
  • DELETE /api/comments/{id} - Удалить комментарий

Примеры запросов

Создание новости

POST /api/news
{
  "title": "Новость",
  "description": "Описание новости"
}

Создание комментария к новости

POST /api/comments
{
  "user_id": 1,
  "content": "Комментарий",
  "commentable_type": "news",
  "commentable_id": 1
}

Создание ответа на комментарий

POST /api/comments
{
  "user_id": 1,
  "content": "Ответ",
  "commentable_type": "comment",
  "commentable_id": 1,
  "parent_id": 1
}

Курсорная пагинация

Комментарии возвращаются с курсорной пагинацией:

  • cursor - ID последнего комментария предыдущей страницы (опционально)
  • limit - Количество комментариев на странице (по умолчанию 20, максимум 100)

Ответ содержит:

  • data - Массив комментариев
  • next_cursor - ID для следующей страницы (null если больше нет)
  • has_more - Есть ли еще комментарии

Структура проекта

app/
├── Domain/          # Доменный слой
├── Application/     # Слой приложения
├── Infrastructure/  # Слой инфраструктуры
└── UI/             # Слой пользовательского интерфейса

Тестирование

docker-compose exec app php artisan test

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages