Skip to content

koshelevd/fastapi-service-template

Repository files navigation

Универсальный шаблон микросервиса на FastAPI

Порядок добавления новой сущности в проект:

/db/tables

  • Добавляем новую модель в имеющийся(или новый) пакет

/db/tables/__init__.py

  • Добавляем созданную модель в init файл пакета tables

Сгенерировать миграции для новой таблицы

  • В корневой директории приложения (src) выполнить команду
  • python3 -m migrations.runner revision --autogenerate - для генерации миграций после генерации миграций желательно удостоверится, что они сгенерированы верно (migrations/versions)
  • python3 -m migrations.runner upgrade head - для применения миграций к БД

/services

interfaces.py:
  • Создаем интерфейс(I) для доступа сервиса к репозиториям в файле interfaces.py, Здесь должны быть сами интерфейсы и класс (UoW), в котором определено, какие репозитории с какими методами принимает сервис.

/repositories

  • Создаем репозиторий в имеющимся (или новом) пакете, для этого: Создаем репозиторий - он наследуется от базового репозитория и интерфейса(I) из пункта выше Не забыть переопределить в новом репозитории метод is_exists

/services/uow.py

  • Добавляем новое наследование (UoW - созданный выше) в имеющийся в файле класс.
  • Определяем в имеющемся классе новое свойство, в котором инициализируется репозиторий и в него прокидывается сессия

/сontrollers/dependencies.py

  • добавляем в функцию get_uow инициализации uow класса новый репозиторий

/services

  • Создаем сервис, функция init которого принимает класс (UoW)
  • Определяем необходимые ошибки бизнес логики в файле errors.py в пакете нашего сервиса

/routers/v1/endpoint_name/dependencies.py

  • добавить функцию get_service_name возвращающую инициализированный сервис для последующего внедрения зависимости в app

/application/app.py

  • регистрируем зависимость в приложении в функции app_setup
  • app.dependencies_overrides[ServiceName] = get_service_name

/dto/

  • Добавляем новую pydantic модель, (в новый или имеющийся пакет) которая будет служить swagger схемой и сериализовывать модели алхимии при выдаче

/routers/v1/

  • Добавляем новый эндпоинт
  • Регистрируем endpoint в init

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published