Prosty backend REST API do obsługi zamówień — zbudowany w Symfony 6, oparty o Docker, z testami i walidacją. Wspiera tworzenie zamówień, aktualizację statusów oraz ich pobieranie.
- Tworzenie zamówienia
POST /orders - Pobieranie zamówienia
GET /orders/{id} - Aktualizacja statusu zamówienia
PATCH /orders/{id} - Obsługa błędów i walidacji
- Testy jednostkowe (
phpunit) - Konfiguracja Docker + MariaDB
- Migracje bazy danych (
doctrine:migrations:migrate)
git clone https://github.com/twoj-login/orders-api.git
cd orders-api
docker-compose up -d --build
docker exec -it app_php_1 bash
composer install
Najczęściej nie musisz nic zmieniać — DATABASE_URL już jest ustawiony na mysql://symfony:symfony@db:3306/orders
Utworzenie struktury bazy danych:
docker exec -it app_php_1 bash
php bin/console doctrine:migrations:migrate
Baza orders_test jest tworzona automatycznie przez Dockera przy starcie kontenera MariaDB (dzięki plikowi docker/init.sql).
php bin/console doctrine:migrations:migrate --env=test
php bin/phpunit
{
"items": [
{
"productId": "SKU123",
"productName": "T-shirt",
"price": 100,
"quantity": 2
},
{
"productId": "SKU456",
"productName": "Cap",
"price": 50,
"quantity": 1
}
]
}
{
"status": "paid"
}
src/
├── Controller/ # Kontrolery API
├── DTO/ # Obiekty transferowe
├── Entity/ # Encje Doctrine
├── Enum/ # Statusy zamówienia (enum)
├── Factory/ # Fabryka Order -> Entity
├── Service/ # Logika aplikacyjna
└── Builder/ # Parsery danych z requestów
🔒 .gitignore
Projekt posiada rozsądnie przygotowany .gitignore, wykluczający katalogi vendor, var, środowiska lokalne, cache, PHPUnit, itp.
- PHP 8.3+
- Docker & Docker Compose
- Composer
- Symfony CLI (opcjonalnie)
- Testy bazują na KernelTestCase i TestCase.
- Baza testowa to osobny MySQL (orders_test).
- Migracje są uruchamiane zarówno dla dev, jak i testów.