Skip to content

Stellar Burger Backend πŸš€ Π‘ΠΎΠ±Π΅Ρ€ΠΈ ΠΈ Π·Π°ΠΊΠ°ΠΆΠΈ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ мСТгалактичСский Π±ΡƒΡ€Π³Π΅Ρ€! πŸ”

Notifications You must be signed in to change notification settings

matthewrv/burger-api

Repository files navigation

Burger API

Π‘Π΅ΠΊΠ΅Π½Π΄ для Π²Π΅Π±-прилоТСния Stellar Burgers - Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я ΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΈ ΠΎΠ±ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

⚠️ Work In Progress

Tests FastAPI Pydantic PyJWT SQLModel Alembic WebSockets Pytest aio_pika

ΠšΡ€ΠΎΠΌΠ΅ собствСнно ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π΄ΠΎΠΊΠΈ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сюда. Π’Π°ΠΌ красивыС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ с Π·Π°ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ NixOS (ΠΊΠ°ΠΊ ΠΈ я btw), Ρ‚ΠΎ для настройки окруТСния достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

nix-shell

Если Ρƒ вас Π½Π΅ NixOS ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ установлСн uv, установитС 😼 ДокумСнтация

ПослС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

uv sync

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ вСдётся Ρ‡Π΅Ρ€Π΅Π· uv.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ запуск

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ запуском создайтС .env Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

./pleh.sh init-dotenv

ΠΠ°ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ инструкции Π½ΠΈΠΆΠ΅.

Π—Π°Ρ‚Π΅ΠΌ, запуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ со всСм ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· docker compose

docker compose up --build -d

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ burger-api с ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π½Π½Ρ‹ΠΌΠΈ дирСкториями app ΠΈ scripts ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ hot-reload. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ Π΄Ρ‘Ρ€Π³Π°Ρ‚ΡŒ Ρ€ΡƒΡ‡ΠΊΠΈ ΠΏΠΎ адрСсу http://localhost:8000 ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· интСрфСйс swagger ΠΏΠΎ адрСсу http://localhost:8000/docs.

Если запускаСтС Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, рСкомСндуСтся ΠΏΡ€ΠΎΠ³Π½Π°Ρ‚ΡŒ скрипт для заполнСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

docker container exec burger-api ./pleh.sh script scripts/load_default_ingredients.py

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

Если хочСтся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° хостС, Π° Π½Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для удобства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

  1. ΠŸΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ .env Ρ„Π°ΠΉΠ» Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π² Π½Ρ‘ΠΌ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° rabbitmq ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° localhost
  2. ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ инструкции
  3. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ burger-api docker container stop burger-api
  4. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ python main.py

Pleh.sh

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ содСрТится bash скрипт со всякими полСзностями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:

# ДокумСнтация ΠΏΠΎ использованию скрипта
./pleh.sh

# Запуск скриптов ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ scripts
./pleh.sh script scripts/load_default_ingredients.py

# Запуск тСстов
./pleh.sh test
# МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для pytest
./pleh.sh test -vv -k 'ingredient'

# Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
./pleh.sh format

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ запуска прилоТСния. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ:

  1. ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚
docker compose up db -d
  1. ΠŸΡ€ΠΎΠ³Π½Π°Ρ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ 2.1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ url Π΄ΠΎ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² .env 2.2. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ:
alembic upgrade head

About

Stellar Burger Backend πŸš€ Π‘ΠΎΠ±Π΅Ρ€ΠΈ ΠΈ Π·Π°ΠΊΠ°ΠΆΠΈ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ мСТгалактичСский Π±ΡƒΡ€Π³Π΅Ρ€! πŸ”

Topics

Resources

Stars

Watchers

Forks

Packages