Skip to content

pet-project. Апи сервис для работы с базой продуктов

Notifications You must be signed in to change notification settings

RomanGodun/products_categories_project

Repository files navigation

API для работы с продуктами и категориями

Основные бизнес функции:

image

Описание:

API-сервис на FastApi, SQLalchemy, Postgres, Docker, docker-compose

Для этого проекта была взята небольшая задача, которою я планирую расширять и дополнять. Основная цель - создание личной кодовой базы

Где можно посмотреть код:

  • Докер - Dockerfile и docker-compose.yaml
  • Модели SQLalchemy - app/database/models/buisiness_entities.py и app/database/models/base.py
  • Настройка алембика - migrations/env.py
  • Функции взаимодейсствия с бд - app/database/dals/base_model_dal.py и app/database/dals/base_dal.py
  • Экшены для модерации таблиц и бизнес функциональности - app/api/actions
  • Схемы для модерации таблиц и бизнес функциональности - app/api/schemas
  • Хэндлеры для модерации таблиц и бизнес функциональности - app/api/handlers

Внимание!

Это личный проект поэтому для удобства пароль от бд находится в открытом доступе в репозитории. Этот пароль скомпрометирован - рекомендую сменить его!

Для этого замените старый пароль на свой в docker-compose.yaml на строке 38 и в app/config/secret.env на строке 1

Первый запуск:

Приложение тестировалось на Ubuntu 20.04

  1. Для работы приложения потребуется Python 3.10 и docker 23.0.1. Установите их.
  2. Находясь в корневой папке проекта запустите файл init.sh
bash init.py

Или запустите команды находящиеся в нем по отдельности:

Запускаем докер:

sudo service docker start

Билдим образы бд и api-сервис:

sudo docker compose build

Поднимаем контейнеры:

sudo docker compose up -d --force-recreate

Устанавливаем пакет с кодом проекта в интерпретатор python:

pip install -e .

Устанавливаем библиотеки для работы алембика в интерпретатор python:

pip install -r requirements/alembic.txt

Накатываем миграции на базу данных:

alembic upgrade heads
  1. Теперь сервис доступен по адресу http://localhost:5050/docs

Настройка:

Dockerfile:

LOGGING_LEVEL - уровень логов в std.err
LOGGING_DIR_LEVEL - Уровень логов в файл
LOG_DIR - Директория куда будут складываться логи. Если не задавать этот конфиг, то логи будут писаться только в std.err
TZ - таймзона установленная в контейнере api-сервиса

app/config/shared.env:

DB_NAME - имя базы данных
DB_HOST_GLOBAL - имя сети docker
DB_HOST_LOCAL - хост по которому можно достучаться до базы не из контейнера
DB_PORT - порт на котором располагается база
DB_USER - имя юзера postgresql

app/config/secret.env:

DB_PASSWORD - пароль бд

Обратите внимание что данные docker_compouse должны совпадать с app/config/shared.env и app/config/secret.env

POSTGRES_DB - имя базы данных - DB_NAME
postgres.name (строка 43) - имя сети docker - DB_HOST_GLOBAL
ports (строка 43) - порт на котором располагается база: порт внутри контейнера - DB_PORT
POSTGRES_USER - имя юзера postgresql - DB_USER
POSTGRES_PASSWORD - пароль бд - DB_PASSWORD

Roadmap:

MVP

  • docker-compouse - Dokerfile
  • Развертывание бд - PostgreSQL
  • Модели, запросы - SQLalchemy
  • api - FastApi

Модерация таблиц:

  • Обновление моделей под v.2,
  • Base модель,
  • Миграции alembic
  • Base data acess level
  • Base actions
  • Handlers
  • Тесты модерации

Система пользователей:

  • Пользователи
  • Аутентификация
  • Токены
  • Роли
  • Тесты системы пользователей

Сбор метрик:

  • Prometheus
  • Тест сбора метрик

Кэширование:

  • Radis
  • Тест кэширования

Деплой:

  • Пайлайн сборки
  • K8 на удаленном сервере
  • Тесты деплоя

Фронтенд:

  • Plotly, Streamlit

About

pet-project. Апи сервис для работы с базой продуктов

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages