ΠΠ΅ΠΊΠ΅Π½Π΄ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Stellar Burgers - Π΄Π΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΠΏΡΠΎΠ±ΡΡ ΠΈ ΠΎΠ±ΠΊΠ°ΡΡΠ²Π°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² Π΄ΠΎΠΊΠΈ - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΄Π°. Π’Π°ΠΌ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Ρ Π·Π°ΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ 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
ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ ΠΎΡΡΠ΅, Π° Π½Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
- ΠΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ .env ΡΠ°ΠΉΠ» Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π² Π½ΡΠΌ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° rabbitmq ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π° localhost
- ΠΠΎΠ΄Π½ΡΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
- ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ burger-api
docker container stop burger-api
- ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
python main.py
Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ 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
ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π½Π°ΠΊΠ°ΡΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ:
- ΠΠΎΠ΄Π½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , Π΅ΡΠ»ΠΈ Π΅ΡΡ Π½Π΅Ρ
docker compose up db -d
- ΠΡΠΎΠ³Π½Π°ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ 2.1. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ url Π΄ΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² .env 2.2. ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
alembic upgrade head