Skip to content

malupixel/orders

Repository files navigation

🧾 Orders API (Symfony + Docker + PHPUnit)

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.


✅ Funkcje

  • 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)

🐳 Uruchomienie projektu

1. Sklonuj repozytorium i przejdź do folderu

git clone https://github.com/twoj-login/orders-api.git
cd orders-api

2. Uruchom kontenery Docker

docker-compose up -d --build

3. Zainstaluj zależności

docker exec -it app_php_1 bash
composer install

4. Wygeneruj plik .env.local (jeśli potrzebny)

Najczęściej nie musisz nic zmieniać — DATABASE_URL już jest ustawiony na mysql://symfony:symfony@db:3306/orders

🗃️ Migracje

Utworzenie struktury bazy danych:

docker exec -it app_php_1 bash
php bin/console doctrine:migrations:migrate

🧪 Uruchomienie testów

Baza orders_test jest tworzona automatycznie przez Dockera przy starcie kontenera MariaDB (dzięki plikowi docker/init.sql).

1. Wykonaj migracje testowe

php bin/console doctrine:migrations:migrate --env=test

2. Odpal testy:

php bin/phpunit

📬 Przykładowe zapytania

Tworzenie zamówienia POST /orders

   {
       "items": [
           {
               "productId": "SKU123",
               "productName": "T-shirt",
               "price": 100,
               "quantity": 2
           },
           {
               "productId": "SKU456",
               "productName": "Cap",
               "price": 50,
               "quantity": 1
           }
       ]
   }

Aktualizacja statusu zamówienia PATCH /orders/{id}

    {
        "status": "paid"
    }

📁 Struktura projektu

   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.

🧠 Wymagania

  • PHP 8.3+
  • Docker & Docker Compose
  • Composer
  • Symfony CLI (opcjonalnie)

💡 Notatki

  • Testy bazują na KernelTestCase i TestCase.
  • Baza testowa to osobny MySQL (orders_test).
  • Migracje są uruchamiane zarówno dla dev, jak i testów.

About

Orders API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published