Реалізовано REST API для керування даними компаній з автоматичним збереженням історії змін (версійністю).
- Універсальний модуль версійності: реалізовано через
TraitтаPolymorphic Relations. Це дозволяє додати версійність будь-якій моделі (наприклад,ProductабоUser) одним рядком коду. - Автоматизація: нові версії створюються автоматично при події
savedмоделі (Eloquent Events), якщо дані були змінені. - Чистий код: використання PHP 8.3+ Enums для статусів відповіді та Form Requests для валідації.
- REST стандарти: коректні HTTP-статуси (201 для створення/оновлення, 200 для дублікатів).
- Framework: Laravel 12
- PHP: 8.4 (Alpine image)
- Database: MySQL 8.4
- Web Server: Nginx
- Environment: Docker
Проєкт повністю підготовлений для розгортання через Docker за допомогою Laravel Sail.
- Клонуйте репозиторій:
git clone <repository_url> cd company-api
- Запустіть Docker-контейнери:
docker compose up -d --build
- Встановіть залежності та налаштуйте БД
docker compose exec app composer run setup
-
Створення / Оновлення компанії
POST /api/companyПриклад запиту:
{ "name": "ТОВ Українська енергетична біржа", "edrpou": "37027819", "address": "01001, Україна, м. Київ, вул. Хрещатик, 44" }* **`201 Created`** (status: `created`) — нова компанія, створена перша версія. * **`200 OK`** (status: `updated`) — дані змінено, створена нова версія. * **`200 OK`** (status: `duplicate`) — дані ідентичні поточним, запис у базу не проводився. -
Історія версій
GET /api/company/{edrpou}/versions
docker compose exec app php artisan test* Створення нових записів.
* Коректність інкременту версій при зміні полів.
* Виявлення дублікатів.
* Валідацію (EDRPOU до 10 символів, обов'язкові поля).