Розширені можливості CLI для зв’язків між сутностями у NestJS Boilerplate

У попередній публікації про bc boilerplates ми розповідали про інтеграцію CLI для створення ресурсів, таких як контролери, сервіси та сутності. Це рішення значно заощаджує час на розгортання, особливо завдяки використанню гексагональної архітектури, що забезпечує гнучкість у виборі баз даних. Боєрплейт дозволяє налаштувати роботу як із документоорієнтованою базою даних, так і з реляційною (наприклад, PostgreSQL з TypeORM), а також підтримує взаємодію з обома типами баз даних одночасно.

Впровадження команд CLI суттєво спростило генерацію ресурсів, таких як контролери, сервіси та сутності. Однак, оскільки типи, доступні для нових властивостей, обмежувалися рядками, числами та логічними значеннями, це спричинило численні запити на підтримку зв’язків типу «один-до-одного», «один-до-багатьох» та «багато-до-багатьох» у межах гексагональної архітектури. Розуміючи, що моделювання таких зв’язків є типовою потребою в багатьох бекенд-проектах, ми вирішили вдосконалити шаблонний CLI для автоматичної підтримки цих функцій. Це не лише вирішує загальну проблему, але й узгоджується з нашою метою скоротити час налаштування, дозволяючи розробникам зосередитися на складніших аспектах своїх програм.

Приклад використання CLI для створення ендпоїнтів ми вже описували тут, а також згадували про роботу над розширенням типів властивостей. Тепер ми раді повідомити, що цю ідею вдалося реалізувати: у новій версії бойлерплейту CLI пропонує значно більше можливостей для створення ресурсів і обробки зв’язків між об’єктами — і все це без написання жодного рядка коду.

Щоб створити новий ресурс, вводимо команду, де замість <name> вказуємо потрібну назву для нової сутності (наприклад, Publication):

npm run generate:resource:relational -- --name=<name>

Це дозволить згенерувати всі необхідні файли (контролер, модуль, сервіс) у новому каталозі src/publication.

Щоб додати нове поле для цієї сутності, потрібно використати команду:

npm run add:property:to-relational

Інтерактивний режим тепер дозволяє зручно додавати нові поля до сутностей. Спочатку потрібно вказати сутність, до якої додається нове поле, та ввести назву нової властивості. Після цього система запропонує вибрати тип поля. Доступні наступні варіанти:

  1. Примітивні типи — рядок, число, логічний.
  2. Посилання на іншу сутність — відносини типу One-To-One, One-To-Many тощо.
  3. Дублювання даних з іншої сутності — для зберігання знімків даних.

Якщо ви виберете посилання на іншу сутність, далі буде запропоновано вибрати тип зв’язку: One-To-One, One-To-Many, Many-To-One або Many-To-Many. Виконуючи ці кроки в інтерактивному режимі, вам не потрібно буде займатися ручною конфігурацією, оскільки налаштування будуть оброблені автоматично.

Давайте розглянемо покроково команди для створення бази даних. Наприклад, уявімо, що ми створюємо блог. Пройдемося схематично по CLI-командах, щоб побудувати структуру бази даних для блогу за кілька кроків — і все це без написання коду.

CLI команди для побудови бекенду для блогу

Завдяки поєднанню генерації об’єктів і зв’язків безпосередньо в CLI ми позбулися потреби вручну створювати шаблонний код. Тепер наш шаблон дозволяє створити повністю функціональний бекенд із базовим дизайном і операціями CRUD за лічені хвилини, без жодного рядка коду. Це дає можливість розробникам зосередитися на бізнес-логіці та складних сценаріях використання, а не на виснажливому налаштуванні.

Якщо ви вже користуєтеся попередньою версією NestJS Boilerplate, оновіть її до останньої, щоб отримати ці нові функції. А якщо ви новачок, то також можете використовувати даний бойлерплейт для створення свого бекенду, адже він значно спростить для вас процес розробки.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі