Mega Market API - бэкенд для веб-сервиса агрегатора товаров.
Сервис взаимодействует с БД PostgreSQL.
Основан на модулях:
- aiohttp - асинхронный HTTP сервер
- SQL Alchemy - ORM библиотека для работы с реляционными СУБД
- asyncpg - асинхронный драйвер/интерфейс PostgreSQL
- Alembic - средство миграции СУБД
- marshmallow - сериализатор/валидатор json данных
- apispec - генерация документации и OpenAPI спецификации (
/docs
)
Имеются сущности: товар OFFER
и категория CATEGORY
.
id
: uuid идентификаторname
: имяparentId
: идентификатор родительской категорииtype
: тип (OFFER
илиCATEGORY
)price
: цена товара или средняя цена товаров в категорииdate
: время последнего обновленияchildren
: дочерние объекты категории
Импортирует новые товары и/или категории.
Товары/категории импортированные повторно обновляют текущие.
Удаляет элемент по идентификатору.
При удалении категории удаляются все дочерние элементы.
Предоставляет информацию об элементе по идентификатору.
При получении информации о категории также предоставляется информация о её дочерних элементах.
Получение списка товаров, цена которых была обновлена в течение 24 часов до времени, переданном в запросе.
Получение статистики (истории обновлений) по товару/категории за заданный полуинтервал [from, to)
- Перейдите в директорию
/deploy
:
cd deploy
- Запустите сборку и старт контейнеров:
make up
Для последующего удаления контейнеров вместе с данными:
make clean
Опционально можно настроить параметры создаваемого пользователя/пароля/базы в файле project/config.env
(параметр DB_HOST
игнорируется)
- Перейдите в директорию
/project
:
cd project
- Установите требуемые зависимости (виртуальное окружение):
pip install -r requirements.txt
- Настройте конфигурацию подключения к PostgreSQL в файле
config.env
:
DB_HOST=localhost
DB_DATABASE=mega_market
DB_USERNAME=postgres_user
DB_PASSWORD=your_db_password
- Проведите миграции для инициализации таблиц / функций / триггеров в БД:
alembic upgrade head
- Запуск сервера:
python main.py
Опционально: debug режим включается env переменной DEBUG
deploy/
|- ... # Файлы развёртывания в Docker Compose
project/
|- app/
| |- accessors.py # Аксессоры - методы-запросы к БД
| |- database.py # Подключение к БД
| |- middlewares.py # Фильтры запросов (валидатор запросов, обработчик ошибок)
| |- models.py # Модели - описание ORM объектов и БД проверок
| |- routes.py # Пути - маршрутизация запросов
| |- schemas.py # Схемы валидации/сериализации запросов/ответов
| |- store.py # Связывание приложения с БД и аксессорами
| |- views.py # Отображения - обработчики запросов
|- migrations/
| |- ... # Файлы миграций БД посредством Alembic
|- tests/
| |- ... # Тесты приложения
|- alembic.ini
|- config.env # Конфигурация подключения к БД
|- main.py # Входная точка приложения - запуск сервера
|- requirements.txt # Python-зависимости
README.md # Этот файл :)
Артем nGragas/Rush_iam Корников.
Вступительный проект для Летней Школы Бэкенд Разработки Яндекс 2022.