Tenhle projet je rozpracovaná API pro správu skladu. API je napsané v Pythonu s využitím frameworku FastAPI. Data jsou ukládána do PostgreSQL databáze.
InventoryAPI
postman.com/downloads/
- Naklonujte si tento repozitář
- Vytvořte si virtuální prostředí
- Nainstalujte si potřebné balíčky pomocí příkazu
pip install -r requirements.txt
- Vytvořte si databazi v PostgreSQL a vytvořte v ní tabulky (tabulky jsou popsány v souboru
models.py
) - Vytvořte si soubor
.env
a nastavte si v něm proměnnéDATABASE_URL
aSECRET_KEY
- Spusťte aplikaci pomocí příkazu
uvicorn main:app --host 127.0.0.1 --port 8000
API obsahuje následující endpointy:
POST /auth/register
- registrace nového uživatelePOST /auth/login
- přihlášení uživateleGET /auth/me
- získání informací o přihlášeném uživateli
GET /category
- získání všech kategoriíPOST /category
- vytvoření nové kategorieGET /category/update/
- aktualizace kategorieGET /category/delete/
- smazání kategorie
-
GET /items
- získání všech položek -
POST /items
- vytvoření nové položky -
GET /items/item/
- získaní položky podle ID -
GET /items/update/
- aktualizace položky -
GET /items/delete/
- smazání položky -
GET /items/add_stock
- přidání zásob (množství) k položce podle ID (pro odebírání zásob je třeba zadat záporné číslo)
GET /log
- získání všech logů
Registrace nového uživatele do systému.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
username |
ano | string | Uživatelské jméno. |
email |
ano | string | Email uživatele. |
password |
ano | string | Heslo uživatele. |
Response
{
"message": "User registered.",
"user": { ... }
}
Přihlášení uživatele do systému.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
username |
ano | string | Uživatelské jméno. |
password |
ano | string | Heslo uživatele. |
Response
{
"access_token": "<token>",
"token_type": "bearer"
}
Získání informací o aktuálně přihlášeném uživateli.
Parametry
Žádné.
Response
{
"password": <password>,
"id": 4,
"created_at": "2025-01-21T19:36:16.596624",
"username": "Test",
"email": "test@test.com",
"role": "admin",
"updated_at": "2025-01-21T19:36:16.596624"
}
Výpis všech kategorií.
Parametry
Žádné.
Response
[
{
"id": 1,
"created_at": "2025-01-21T18:52:09.948755",
"description": "Description 1",
"name": "Category 1",
"updated_at": "2025-01-21T18:52:09.948755"
},
{
"id": 2,
"created_at": "2025-01-21T18:53:15.609222",
"description": "Description 2",
"name": "Category 2",
"updated_at": "2025-01-21T18:53:15.609222"
}
]
Vytvoření nové kategorie (Admin only).
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
name |
ano | string | Název kategorie. |
description |
ne | string | Popis kategorie. |
Response
{
"message": "Category has been created",
"category": { ... }
}
Aktualizace kategorie (Admin only).
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
category_id |
ano | int | ID kategorie. |
name |
ne | string | Nový název kategorie. |
description |
ne | string | Nový popis kategorie. |
Response
{
"message": "Category {category_id} has been updated",
"category": { ... }
}
Smazání kategorie (Admin only).
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
category_id |
ano | int | ID kategorie k odstranění. |
Response
{
"message": "Category {category_id} has been deleted"
}
Výpis položek podle filtru.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
category_id |
ne | int | ID kategorie pro filtrování položek. |
search |
ne | string | Hledaný řetězec pro vyhledávání položek. |
limit |
ne | int | Počet položek k zobrazení (výchozí 100). |
offset |
ne | int | Počet přeskočených položek (výchozí 0). |
Response
[
{
"description": "Description 1",
"name": "Name 1",
"quantity": 100,
"price": 799.9,
"updated_at": "2025-01-21T20:42:32.835464",
"id": 1,
"category_id": 1,
"created_at": "2025-01-21T20:42:32.835464"
},
{
"description": "Description 2",
"name": "Name 2",
"quantity": 100,
"price": 799.9,
"updated_at": "2025-01-21T20:42:32.835464",
"id": 2,
"category_id": 1,
"created_at": "2025-01-21T20:42:32.835464"
}
]
Vytvoření nové položky.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
name |
ano | string | Název položky. |
description |
ne | string | Popis položky. |
category_id |
ano | int | ID kategorie, do které položka patří. |
quantity |
ano | int | Počet kusů skladem. |
price |
ano | float | Cena položky. |
Response
{
"message": "Item has been created.",
"item": { ... }
}
Výpis položky podle ID.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
item_id |
ano | int | ID požadované položky. |
Response
{
"name": "Name 1",
"description": "Description 1",
"quantity": 100,
"price": 799.9,
"updated_at": "2025-01-21T20:42:32.835464",
"id": 1,
"category_id": 1,
"created_at": "2025-01-21T20:42:32.835464"
}
Úprava položky.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
item_id |
ano | int | ID položky k úpravě. |
name |
ne | string | Nový název položky. |
description |
ne | string | Nový popis položky. |
category_id |
ne | int | Nový ID kategorie položky. |
quantity |
ne | int | Nový počet kusů skladem. |
price |
ne | float | Nová cena položky. |
Response
{
"message": "Item {item_id} has been updated.",
"item": { ... }
}
Smazání položky.
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
item_id |
ano | int | ID položky k odstranění. |
Response
{
"message": "Item {item_id} has been deleted."
}
Přidání nebo odebrání zásob (minusové hodnoty pro odebrání).
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
item_id |
ano | int | ID položky. |
quantity |
ano | int | Množství k přidání nebo odebrání (záporná hodnota). |
Response
{
"message": "{quantity} has been added to Item {item_id} stock.",
"item": { ... }
}
Přidání nebo odebrání zásob (minusové hodnoty pro odebrání).
Parametry
Název | Požadováno | Typ | Popis |
---|---|---|---|
limit |
ne | int | Počet položek k zobrazení (výchozí 100). |
offset |
ne | int | Počet přeskočených položek (výchozí 0). |
Response
[
{
"id": 1,
"action": "Added 100 to Item 1 stock.",
"timestamp": "2025-01-23T16:16:19.175934",
"user_id": 4,
"item_id": 1,
"quantity": 100
},
{
"id": 2,
"action": "Added 100 to Item 2 stock.",
"timestamp": "2025-01-23T16:16:25.352056",
"user_id": 4,
"item_id": 1,
"quantity": 100
}
]