Skip to content

alex-bul/yandex_market_ybs22

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Вступительное задание в Летнюю ШБР Яндекса 2022

Проект представляет собой API магазина, реализующий CRUD функционал для товаров + получение особых данных (скидок, истории изменения). Задание выполнено полностью, реализованы базовые и дополнительные задачи.

Технологии: Python, FastApi, SQLAlchemy, PostgreSQL

По умолчанию проект запускается на 0.0.0.0:80. Доступна авто-генерируемая интерактивная документация к маршрутам, чтобы открыть, перейдите на /docs. Имеются тесты.

Структура приложения

Главным файлом является main.py в корневой директории, он инициализирует маршруты и запускает веб-сервер. Все остальные файлы распределены по тематическим папкам.
Сложные функции имеют комментарии, описывающие пошагово работу и краткую документацию в виде docstring. Также подробное описание полей имеют схемы pydantic.

  • /schemas - схемы pydantic для валидации данных и удобной работы с ними
  • /db - всё для базы данных: подключение к базе данных, модели таблиц, методы для работы с данными
  • /routers - маршруты
  • /core - вспомогательные вещи
  • /tests - тесты

Установка и запуск

Клонируйте файлы проекта. Дальнейшие шаги зависят от того, будете ли вы использовать Docker для запуска или нет

Без Docker

  1. Установите зависимости
pip install -r requirements.txt
  1. В .env файле укажите ссылку для подключения к базе данных в параметр POSTGRES_URL_ENV. Установите PostgreSQL (https://www.postgresql.org/) и запустите его сервер, если раннее не сделали это.
  2. Запустите main.py
python main.py

Готово! 😎
Апи будет доступно на 0.0.0.0:80.

Используя Docker

В репозитории уже имеются готовые файлы (Dockerile и docker-compose.yml) для запуска приложения с помощью Docker. В docker-compose.yml прописана конфигурация базы данных, при желании вы можете изменить её.

Для запуска используйте:

docker-compose up

Готово! 🤯
Апи будет доступно на 0.0.0.0:80.

Тестирование

В проекте имеются тесты, которые покрывают:

  • валидацию данных при запросе
  • работу маршрутов, логики
  • особые случаи

Запуск тестов

  1. Установите pytest
pip install pytest
  1. Запустите, используя команду в корневой директории проекта
pytest

И вам отобразится результат работы тестов

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages