Skip to content

nimleaf/foxy-mart

Repository files navigation

Foxy Mart

Lišákův obchod

Lišák Petr se rozhodl, že ho nebaví pořád jen lovit. Když se podíval kolem sebe, zjistil, že v lese je spoustu různých plodů, které by mohl sbírat a prodávat ostatním zvířatům. Tak se rozhodl, že si otevře obchod a různé ovoce, ořechy a zeleninu bude prodávat. Tento systém slouží pro správu produktů v obchodě Foxy Mart.

Obsah


Úvod

Tento projekt poskytuje REST API pro správu produktů v obchodě Foxy Mart. API umožňuje:

  • Spravovat produkty (upravovat, mazat)
  • Sledovat historii cen
  • Filtrovat produkty podle názvu a počtu kusů na skladě

API je popsáno OpenAPI specifikací a využívá Nette Framework.


Požadavky

Před spuštěním projektu je nutné mít nainstalované následující nástroje:

  • Docker a Docker Compose pro spouštění kontejnerů
  • Postman pro testování API (nebo jiný nástroj pro testování REST API)
  • Make pro spuštění scriptů

Instalace

1. Klonování repozitáře

Nejprve si klonuj tento repozitář

2. Spuštění aplikace pomocí Dockeru

Vytvoř a spusť kontejner pro projekt pomocí Docker Compose:

docker-compose up -d

3. Instalace závislostí

make composer-install

4. Vytvoření databáze s testovacími daty

make database-create

Použití API

1. Získání všech produktů

Endpoint: GET /api/products

Vrací seznam všech produktů v databázi.

Parametry:

  • name (volitelné): Filtrovat produkty podle názvu.

    • Typ: string
    • Příklad: "Jablko"
  • stock (volitelné): Filtrovat produkty podle počtu kusů na skladě.

    • Typ: integer
    • Příklad: 100

Odpověď:

Pokud požadavek proběhne úspěšně, vrátí seznam produktů.

[
  {
    "id": 1,
    "name": "Jablko",
    "price": 12.49,
    "stock": 100,
    "priceHistory": [
      {
        "price": 10.99,
        "createdAt": "30.03.2025, 10:00:00"
      }
    ],
    "createdAt": "30.03.2025, 10:00:00",
    "updatedAt": null
  }
]

2. Smazání produktu

Endpoint: DELETE /api/products/delete/{id}

Umožňuje smazat produkt podle jeho ID.

Parametry:

  • id (povinné): ID produktu, který má být smazán.
    • Typ: integer

Odpověď:

Pokud produkt neexistuje, vrátí se odpověď 404:

{
  "message": "Product not found"
}

Pokud je produkt smazán, vrátí se odpověď 200:

{
  "message": "Product successfully deleted"
}

3. Úprava produktu

Endpoint: PUT /api/products/edit/{id}

Umožňuje upravit produkt podle jeho ID. Při změně ceny se automaticky přidá nový záznam do historie cen.

Parametry:

  • id (povinné): ID produktu, který má být upraven.
    • Typ: integer

Tělo požadavku:

{
  "name": "Nový název produktu",
  "price": 15.99,
  "stock": 200
}
  • name (volitelné): Nový název produktu.

    • Typ: string
    • Povolené hodnoty: libovolný text.
  • price (volitelné): Nová cena produktu.

    • Typ: number (float)
  • stock (volitelné): Nový počet kusů na skladě.

    • Typ: integer

Odpověď: Pokud požadavek proběhne úspěšně, vrátí se odpověď 200 s informacemi o upraveném produktu.

{
  "id": 1,
  "name": "Nový název produktu",
  "price": 15.99,
  "stock": 200,
  "priceHistory": [
    {
      "price": 12.49,
      "createdAt": "30.03.2025, 10:00:00"
    },
    {
      "price": 15.99,
      "createdAt": "02.04.2025, 14:00:00"
    }
  ],
  "createdAt": "30.03.2025, 10:00:00",
  "updatedAt": "02.04.2025, 14:00:00"
}

Pokud je zadáno neplatné parametry, vrátí se odpověď 400:

{
  "message": "Invalid input parameters"
}

Pokud produkt neexistuje, vrátí se odpověď 404:

{
  "message": "Product not found"
}

Testování v Postmanu

Import OpenAPI Specifikace do Postmanu

  1. Stáhněte OpenAPI specifikaci (soubor openapi.json) z vašeho projektu.
  2. Otevřete Postman a klikněte na Import v levém horním rohu.
  3. Zvolte File, vyberte soubor openapi.json a klikněte na Open.
  4. Postman automaticky načte všechny definované endpointy a metody API.

Testování jednotlivých endpointů

A. Získání všech produktů
  1. Vyberte GET metodu.
  2. Zadejte URL endpointu: http://localhost/api/products.
  3. Klikněte na Send.
  4. Pokud požadavek probíhá správně, Postman zobrazí seznam všech produktů.
B. Smazání produktu
  1. Vyberte DELETE metodu.
  2. Zadejte URL endpointu: http://localhost/api/products/delete/{id} (nahraďte {id} platným ID produktu).
  3. Klikněte na Send.
  4. Pokud produkt existuje, odpověď bude obsahovat zprávu: Product successfully deleted.
  5. Pokud produkt neexistuje, odpověď bude obsahovat zprávu: Product not found.
C. Úprava produktu
  1. Vyberte PUT metodu.
  2. Zadejte URL endpointu: http://localhost/api/products/edit/{id} (nahraďte {id} platným ID produktu).
  3. V sekci Body vyberte raw a zvolte JSON.
  4. Zadejte tělo požadavku:
{
  "name": "Nový název produktu",
  "price": 15.99,
  "stock": 200
}
  1. Klikněte na Send.
  2. Pokud produkt existuje a parametry jsou platné, Postman vrátí informace o upraveném produktu v odpovědi.
  3. Pokud zadáte neplatné parametry, Postman zobrazí chybu s odpovědí Invalid input parameters.
  4. Pokud produkt neexistuje, Postman zobrazí odpověď Product not found.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors