Оновлення NestJS Boilerplate: нові можливості та поліпшення
Ми раді поділитися свіжими новинами про наш NestJS Boilerplate! За останній час ми отримали багато запитів від вас і комʼюніті щодо наступних удосконалень:
- Автоматичне видалення непотрібного функціоналу під час інсталяції проєкту.
- Можливість додавання ресурсів (контролери, сервіси, сутності тощо) через CLI, адже раніше це було досить трудомістким процесом, особливо з урахуванням використання гексагональної архітектури.
Тож наразі вказані покращення вдалось реалізувати😊. Тож давайте більш детально розглянемо, як користувачі бойлеплейту можуть ними скористатись
Новий CLI для генерації ресурсів
Ми додали CLI, який дозволяє автоматично створювати ресурси та їх властивості. Для демонстрації його використання розглянемо це на прикладі створення ендпоїнтів для блогу. Запустимо бекенд за допомогою NestJS Boilerplate (у прикладі використаємо MongoDB). Якщо у вас виникли питання чи певні труднощі з розгортанням самого бойлерплейту, ми рекомендуємо проглянути це відео, де всі етапи показуються покроково. Також, у відео розгладається використання CLI для з реляційнї бази даних.
Після розгортання бойлерплейту у нас вже є маршрути для Users, Files, Auth і Home, які можна побачити у Swagger. Щоб згенерувати новий ресурс, скористаємося командою:
npm run generate:resource:document -- --name=Publication
Після виконання команди у папці `src/publication` з’явиться новий модуль з файлами `publication.controller.ts`, `publication.module.ts`, `publication.service.ts`, а також вкладені папки `domain` та `infrastructure`, де будуть зберігатися сутності та інші необхідні файли.
Новостворений ресурс також буде додано до Swagger, де ви зможете побачити нові ендпоїнти для створення, отримання всіх піблікацій з пагінацією та одного по id, оновлення та видалення публікації.
На момент генерації модель містить лише поля `id`, `createdAt`, `updatedAt`.
В нашому прикладі передбачається, що кожна публікація в блозі має мати «title» та «body». Щоб додати поле «title», потрібно використати команду:
npm run add:property:to-document
У інтерактивному режимі вказуємо назву сутності Entity name — куди саме потрібно додати властивість, в нашому прикладі це в Publication, Property name, обираємо тип string та додаємо add to DTO для можливості подальшої модифікації. В результаті в dto, domain, в schema і в mapper ми бачимо додану пропертіз «title». Оновлюємо Swagger і бачимо, що в Schema Example Value як в Parameters, так і в Responses зʼявилося створене поле {«title»: «string»}.
Наступне поле, яке ми маємо намір додати — «body». Кроки для його додавання мало чим відрізнятяються від попередніх, їх можна побачити на скріншоті.
Все створено, можна користуватися. Спробувати працювати з новими api routes можна у Swagger.
Таким чином, ми створили п’ять CRUD ендпоїнтів і додали до них необхідні поля, не написавши жодного рядка коду вручну!
Хочемо ще раз наголосити, наш Boilerplate використовує гексагональний архітектурний підхід (відомий як «порти та адаптери»), що дозволяє легко змінювати базу даних або іншу інфраструктуру без впливу на бізнес-логіку. Детальніше про це можна прочитати у документації. Тому у випадку роботи з реляційною базою даних (наприклад, PostgreSQL з TypeORM) або з двома типами баз даних одночасно, команди для роботи з ресурсами будуть відрізнятися.
Подальші плани та поліпшення
Ми продовжуємо працювати над вдосконаленням bcboilerplates. Наприклад, наразі ми працюємо над розширенням типів даних для полів, оскільки зараз доступні лише `string`, `number` та `boolean`. У майбутньому користувачі зможуть обирати не тільки між примітивними типами, але й посилатися на інші сутності з можливістю створення звʼязків one-to-one, one-to-many, many-to-many.
Будемо раді почути ваші пропозиції щодо покращення NestJS Boilerplate. А ваші зірочки на GitHub надихають нас продовжувати роботу!
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів