Как централизовать папку с моделями баз данных, если она используется в нескольких проектах? - PullRequest
1 голос
/ 19 сентября 2019

Привет, у нас есть 3 разных RESTapis , а именно A, B и C, и все имеют доступ к одной и той же MySQL базе данных.Наш стек NodeJS + ExpressJS + SequlizeJS ORM + MySQL

Прямо сейчас. Если я хочу создать новую модель БД, мне нужно создать ее в API A и общаться с другими разработчиками, которые работают над API B и C, для копирования ивставьте новую модель в папку моделей своих проектов.

Это очень неэффективно и имеет много ошибок во время процесса.

Так что вместо того, чтобы делать это вручную, мы можем автоматизироватьэто задание с новым репо в bitBucket?Идея состоит в том, чтобы создать репозиторий в bitBucket и кое-что, как ссылаться на эту папку моделей во всех трех проектах, вместо того, чтобы хранить папку моделей в каждом проекте?

Как мне добиться этого, используя NodeJS, ExpressJS и BitBucket?

Anyhelp!Спасибо заранее.

1 Ответ

0 голосов
/ 19 сентября 2019

Я предполагаю, что через API A, B и C вы имеете в виду совершенно разные проекты здесь.Если это так, то я могу предложить вам использовать подмодули GIT.Но, широко используя подмодули, я бы предложил использовать это, только если это неизбежно.

Структура проекта, над которой я обычно работаю:

.(Git Root)
├── logs
├── resources
├── schema
│   └── <different-entities>
├── src
│   ├── config
│   ├── controllers
│   ├── jobs
│   │   ├── emails
│   │   └── notifications
│   ├── locales
│   ├── middlewares
│   ├── migrations
│   ├── models (You need to have a git submodule here)
│   ├── public
│   ├── seeders
│   ├── services
│   │   ├── entities
│   │   └── factories
│   ├── transformers
│   ├── types
│   ├── types-override
│   ├── util
│   └── validators
│       ├── keywords
│       └── <different-entities>
├── storage
│   ├── <date>
├── stubs
└── temp_files

Это звучит легко, но помните следующее:

  • Если ваш существующий проект имеет каталог models в истории git, вы не можете создать подмодуль в этом каталоге (По крайней мере, это был не простой способ. Я сделал это, переименовав models в shared-models)
  • Теперь будет 2 git-репозитория:

    A. git-репозиторий, содержащий все файлы модели (Вы никогда не откроете этот репозиторий GIT.в вашей IDE)

    B. основной репозиторий git вашего проекта.

    Таким образом, в большинстве случаев будут возникать ненужные конфликты слияния при объединении любых веток в вашем главномрепозиторий.потому что основной репозиторий просто отслеживает хэш коммитов, ваш репозиторий моделей должен быть включен в этот момент.Любой новый коммит (независимо от того, будет ли он даже ускоренным, будет рассматриваться как конфликт слияния)

This is how it looks on bitbucket. I've obfuscated name of services repository and partially obfuscated hash of commit of services repository the main project is referencing...

  • Третий и самый утомительный недостаток: предположим, вам нужно просто внести изменения в файл модели и ничего больше в изменениях проекта.(Да, это нечасто, но возможно. Например, добавление другого значения перечисления в статус-ключ).Для этого вам нужно будет сделать два коммита: сначала в репозитории моделей, в котором будут храниться реальные изменения, затем в основном репозитории, в котором будет храниться новый хэш коммитов, и двух коммитов помещать в два разных репозитория

Если я еще не потерял вас, и вы считаете, что это правильный подход для вашего случая использования (хотя я не могу придумать ничего лучшего)

  1. скопировать каталог ваших полных моделей в новое место(Допустим, рабочий стол).
  2. git init внутри ~ / Desktop / models
  3. поместите его в отдельное хранилище битовых корзин.(Я обычно называю это <project>-models-<lang>, например, facebook-models-node)
  4. возвращайтесь в ваш главный Проект A.
  5. удаляйте каталог моделей там
  6. запустите: git submodule add <HTTPS/SSH Url of bitbucket> src/shared-models
  7. заменить импорт моделей с src/models на src/shared-models
  8. Повторите шаги 5-7 для других проектов

Официальный подмодуль GIT: https://git -scm.com / книга / а / v2 / GIT-Tools-подмодули

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...