- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
- ΠΡΠΎΡΠ΅ΡΡ Β«ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ»
- ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΠ»Π°Π³ΠΎΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ½Π΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΡΠΈΠΊΠΎΠ² QRKot
Π€ΠΎΠ½Π΄ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ:
- Π½Π° ΠΌΠ΅Π΄ΠΈΡΠΈΠ½ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ΄Π°ΡΡΠΈΡ ΡΡ Ρ Π²ΠΎΡΡΠ°ΡΡΡ
- Π½Π° ΠΎΠ±ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΈΠΈ Π² ΠΏΠΎΠ΄Π²Π°Π»Π΅
- Π½Π° ΠΊΠΎΡΠΌ ΠΎΡΡΠ°Π²ΡΠΈΠΌΡΡ Π±Π΅Π· ΠΏΠΎΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΊΠ°ΠΌ
- Π½Π° Π»ΡΠ±ΡΠ΅ ΡΠ΅Π»ΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΊΠΎΡΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠΈΠΈ
Π Π€ΠΎΠ½Π΄Π΅ QRKot ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΡΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½Π°Ρ ΡΡΠΌΠΌΠ° ΡΠΎΠ±ΡΠ°Π½Π° β ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ.
ΠΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ First In, First Out: Π²ΡΠ΅ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ΄ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ°Π½ΡΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ; ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°Π±ΠΈΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΠΌΠΌΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ β ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ. ΠΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΠ΅Π»Π΅Π²ΡΠ΅: ΠΎΠ½ΠΈ Π²Π½ΠΎΡΡΡΡΡ Π² ΡΠΎΠ½Π΄, Π° Π½Π΅ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡ Π½Π΅ Π½Π°Π±ΡΠ°Π» Π½ΡΠΆΠ½ΡΡ ΡΡΠΌΠΌΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΆΠ΅ Π² Π€ΠΎΠ½Π΄Π΅ Π½Π΅Ρ ΠΎΡΠΊΡΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² β ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π΄Π΅Π½ΡΠ³ΠΈ ΠΆΠ΄ΡΡ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ΅ Π½Π΅ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
Π¦Π΅Π»Π΅Π²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ°ΠΉΡΠ°.
ΠΡΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΈ ΡΠΆΠ΅ Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΡΠΌΠΌΡ. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² β ΠΈ ΠΎΡΠΊΡΡΡΡΡ , ΠΈ Π·Π°ΠΊΡΡΡΡΡ .
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ²ΠΎΠΈΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ.
Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° openapi.json:
ΠΠ»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Π½Π° ΡΠ°ΠΉΡ https://redocly.github.io/redoc/. ΠΠ²Π΅ΡΡ Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Upload a file, Π½Π°ΠΆΠΌΠΈΡΠ΅ Π΅Ρ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ReDoc. ΠΠ°Ρ API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ
- ΠΡΠΎΠ΅ΠΊΡΡ
- ΠΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΠΎΠ²ΠΎΡΠΎΠΊ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ FastAPI Users.
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡ Bearer ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ JWT.
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠΎΡΡΠ΅ΡΡ Auth Router, Register Router, Users Router.
- ΠΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°ΠΏΡΠ΅Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ: ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π° deprecated.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ CharityProject, ΡΠ²ΡΠΆΠΈΡΠ΅ Π΅Ρ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ charityproject
Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Π‘ΡΠΎΠ»Π±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ charityproject
:
id
β ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡname
β ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅; Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°Ρ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ β ΠΎΡ 1 Π΄ΠΎ 100 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎdescription
β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΡΠ΅ΠΊΡΡ; Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°full_amount
β ΡΡΠ΅Π±ΡΠ΅ΠΌΠ°Ρ ΡΡΠΌΠΌΠ°, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅; Π±ΠΎΠ»ΡΡΠ΅ 0invested_amount
β Π²Π½Π΅ΡΡΠ½Π½Π°Ρ ΡΡΠΌΠΌΠ°, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅; Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 0fully_invested
β Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ Π½Π° ΡΠΎ, ΡΠΎΠ±ΡΠ°Π½Π° Π»ΠΈ Π½ΡΠΆΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Π·Π°ΠΊΡΡΡ Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ); Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β Falsecreate_date
β Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΈΠΏ DateTime, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°close_date
β Π΄Π°ΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, DateTime, ΠΏΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Π±ΠΎΡΠ° Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ
ΠΡΠ±ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΠ°ΠΉΡΠ° (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
Π‘ΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ:
- ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ
- ΡΠ΄Π°Π»ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΎ ΡΡΠ΅Π΄ΡΡΠ²
- ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΡΡΠΌΠΌΡ (Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΆΠ΅ Π²Π½Π΅ΡΡΠ½Π½ΠΎΠΉ)
ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΡΠ΅Π· API ΡΠ°Π·ΠΌΠ΅Ρ Π²Π½Π΅ΡΡΠ½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
ΠΡΠ±ΠΎΠΉ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΡΠ΅ ΠΏΠΎΠ»Ρ:
id
comment
full_amount
create_date
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°
Π‘ΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΠΊΡΠΎ
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Donation, ΡΠ²ΡΠΆΠΈΡΠ΅ Π΅Ρ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ donation
Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Π‘ΡΠΎΠ»Π±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ donation
:
id
β ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡuser_id
β id ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠ΄Π΅Π»Π°Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅. Foreign Key Π½Π° ΠΏΠΎΠ»Π΅ user.id ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉcomment
β Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅full_amount
β ΡΡΠΌΠΌΠ° ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅; Π±ΠΎΠ»ΡΡΠ΅ 0invested_amount
β ΡΡΠΌΠΌΠ° ΠΈΠ· ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ; Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ 0fully_invested
β Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ Π½Π° ΡΠΎ, Π²ΡΠ΅ Π»ΠΈ Π΄Π΅Π½ΡΠ³ΠΈ ΠΈΠ· ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Ρ Π² ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ; ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ Falsecreate_date
β Π΄Π°ΡΠ° ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ; ΡΠΈΠΏ DateTime; Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡclose_date
β Π΄Π°ΡΠ°, ΠΊΠΎΠ³Π΄Π° Π²ΡΡ ΡΡΠΌΠΌΠ° ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ; ΡΠΈΠΏ DateTime; Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Β«ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ» (ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ invested_amount
ΠΊΠ°ΠΊ Π² ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡΡ
, ΡΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ fully_invested
ΠΈ close_date
, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ).
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π° Π² Π±Π°Π·Π΅ Π±ΡΠ»ΠΈ Β«ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅Β» (Π½Π΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ) ΡΡΠΌΠΌΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ β ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈ Π² ΠΎΡΠ²Π΅ΡΠ΅ API ΡΡΠΈ ΡΡΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ΅Π½Ρ. Π’ΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ: Π΅ΡΠ»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΡΡΠΈ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΡΠΈΡΠ»ΠΈΡΡΡΡ Π½Π° ΠΈΡ ΡΡΠ΅ΡΠ°.
Π€ΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· API-ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π‘Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ app/services/ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΠ°ΠΆΠ½ΠΎ! Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΉ Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ commit()
ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠ°ΡΡΡΡΡ ΡΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ Π·Π° Π΅Π΄ΠΈΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΈ Π½ΠΈΠΊΡΠΎ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ΄ΡΡΡΡΡ Π΄Π»Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ.
ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ refresh()
ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ· ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ° sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here
- ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ
git clone https://github.com/foxygen-d/cat_charity_fund.git
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
python3 -m venv venv
- Π·Π°ΠΏΡΡΠΊ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
. venv/bin/activate
- ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt
pip install -r requirements.txt
- Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°
uvicorn main:app
- Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅ΡΡΠ°ΡΡΠΎΠΌ
uvicorn main:app --reload
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Alembic Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
alembic init --template async alembic
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ
alembic revision --autogenerate -m "migration name"
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ
alembic upgrade head
- ΠΎΡΠΌΠ΅Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ
alembic downgrade
- Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ²
pytest
- Python 3.7
- FastAPI 0.7.0
- Works on Linux, Windows, macOS