Этот проект является тестовым примером SaaS приложения. Он предназначен для демонстрации основного шаблона архитектуры и принципов взаимодействия в рамках подобных проектов.
Проект включает в себя следующие основные компоненты:
├── requirements.txt # Зависимости проекта
├── app/ # Основная директория приложения
│ ├── __init__.py
│ ├── api/ # API приложения
│ │ ├── main.py # Основной модуль API
│ │ ├── __init__.py
│ │ ├── auth/ # Модули аутентификации
│ │ │ ├── auth_utils.py
│ │ │ ├── __init__.py
│ │ ├── handlers/ # Обработчики запросов
│ │ │ ├── docs.py
│ │ │ ├── webhooks.py
│ │ │ ├── __init__.py
│ │ ├── models/ # Модели данных
│ │ │ ├── standard.py
│ │ │ ├── webhooks.py
│ │ │ ├── __init__.py
│ │ ├── processing/ # Обработка данных
│ │ ├── parametr_sql_validator.py
│ │ ├── webhooks.py
│ │ ├── __init__.py
├── configs/ # Конфигурации
│ ├── config.ini
│ ├── config.py
│ ├── __init__.py
├── database/ # Взаимодействие с базой данных
├── onlihub_objects.py
├── psql.py
├── __init__.py
Чтобы запустить проект, выполните следующие шаги:
-
Клонируйте репозиторий:
git clone https://github.com/Vangardo/test_saas -
Перейдите в директорию проекта:
cd test_saas -
Установите необходимые зависимости:
pip install -r requirements.txt -
Перейдите в папку
app, где находится файлmain.py:cd app -
Запустите приложение с помощью Uvicorn:
uvicorn main:app --port 8016
Это запустит сервер на порту 8016. Теперь вы можете обращаться к вашему приложению через указанный порт.
Цель задания — расширение функциональности проекта за счет добавления нового эндпоинта для управления продуктами.
Реализация нового эндпоинта должна быть выполнена в соответствии с существующей архитектурой проекта и структурой, используемой для вебхуков.
Создайте эндпоинт Products, который будет включать в себя следующие операции:
- Создание продукта: Добавление нового продукта в базу данных.
- Обновление продукта: Изменение информации о существующем продукте.
- Удаление продукта: Удаление продукта из базы данных.
- Получение информации о конкретном продукте: Вывод данных одного выбранного продукта.
- Получение списка всех продуктов: Вывод списка всех продуктов с информацией о них.
Проверка безопасности должна быть реализована аналогично тому, как это сделано в эндпоинтах вебхуков.
Таблица Products в базе данных должна содержать следующие колонки:
id: Уникальный идентификатор продукта.name: Название продукта.user_id: Идентификатор пользователя, добавившего продукт.category_id: Идентификатор категории продукта.status_id: Идентификатор статуса продукта.
При получении информации о продуктах необходимо учитывать связи с другими таблицами:
- Соединение с таблицей
categoriesпо колонкеcategory_id: При выводе информации о продукте или списка продуктов следует включатьtitleиз таблицыcategories. - Соединение с таблицей
Product_statusesпо колонкеstatus_id: Включать информацию о статусе продукта, получаяtitleиз таблицыProduct_statuses. - Соединение с таблицей
usersпо колонкеuser_id: Включать информацию о пользователе, добавившем продукт, получаяnameиз таблицыusers.