Проект представляет из себя веб-приложение, с помощью которого люди смогут для управлять продуктами на торговой площадке.
- Добавление, обновление, удаление и получение информации о продуктах.
- Получение списка продуктов с фильтрацией по категориям и цене.
- CRUD операции для категорий продуктов.
- Python 3.12
- FastAPI
- SQLAlchemy
- Pre-commit
- Ruff
- Postgres
- Docker
- Клонируйте репозиторий и перейдите в папку проекта:
git clone git@github.com:babanlive/trading_platform.git && cd trading_platform- Создание файла .env
- Создайте в папке приложения файл
.envсогласно образцу .env.example
- Запуск проекта через Docker
- Для запуска в режиме разработки выполните команду:
docker-compose -f docker compose.dev.yaml up --build- Выполните миграции
docker exec -it app_fastapi poetry run alembic upgrade head- Базовый URL
API доступно по адресу:
http://127.0.0.1:8000/api/v1/-
GET /products — Получение списка продуктов с поддержкой фильтрации.
-
POST /products — Добавление нового продукта.
-
PUT /products/{product_id} — Обновление информации о продукте.
-
DELETE /products/{product_id} — Удаление продукта.
-
GET categories — Получение списка категорий.
-
POST /categories — Добавление новой категории.
-
PUT /categories/{category_id} — Обновление информации о продукте.
-
DELETE categories/{category_id} — Удаление категории.
- Создание категории
curl -X 'POST' \
'http://127.0.0.1:8000/api/v1/categories' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Fruits"
}'- Добавление продукта
curl -X 'POST' \
'http://127.0.0.1:8000/api/v1/products' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Banana",
"description": "price for 1kg bananas",
"price": 175,
"image_url": "http://example_picture.com/banana.png",
"category_id": 1
}'- Получение продуктов с фильтрацией.
curl -X 'GET' \
'http://127.0.0.1:8000/api/v1/products?category_id=3&min_price=100' \
-H 'accept: application/json'-
Создайте тестовую БД
docker exec -it pg_db psql -U user -d postgres -c "CREATE DATABASE test_db;"
-
Запустите тесты:
docker exec -it app_fastapi poetry run pytest -v tests/ --disable-warnings