05. Бизнес-логика приложения и домашнее задание

Для доступа к видео оформите подписку на курс

05. Бизнес-логика приложения и домашнее задание

Реализация бизнес-логики backend-приложения в NestJS. Разделение архитектурных слоёв и закрепление полученных знаний через практическое домашнее задание.

Оценить качество материала и подачу материала автором видео:

Front-end

Трудоустройтесь middle front-end разработчиком на React JS (TypeScript) за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Front-end

Back-end

Трудоустройтесь middle back-end разработчиком за 12-16 месяцев обучения с ежедневной менторской поддержкой в формате видео 1 на 1 и коммерческими проектами в портфолио

Перейти на курс
Back-end

Карьерный бустер

Получите коммерческий опыт на реальных стартапах, прокачайте tech & soft навыки, научитесь работать в команде, проходить собеседования и получите первую работу в IT!

Перейти на курс
Карьерный бустер

Основы Front-end

Сделайте первый шаг в IT, освоив базовые знания разработки и научившись создавать небольшие проекты на JavaScript

Перейти на курс
Основы Front-end

Основы Back-end

Сделайте первый шаг в IT, освоив базовые знания разработки. Без опыта. Без математики. Только практика: JavaScript, SQL, Node JS, база данных

Перейти на курс
Основы Back-end

12. Бизнес логика приложения

1. Техническое задание 1

Только совершеннолетние пользователи могут добавлять книги в книжную лавку, у которых возрастное ограничение больше 18

Реализуем эту логику в методе BooksService.createBook(dto: CreateBookDto):

  1. Добавим недостающий аргумент в метод
  2. Запросим пользователя, который делает запрос на создание книги, чтобы проверить его возраст
  3. Инжектируем нужные зависимости
  4. Проверяем возраст и возрастные ограничения у книги - если ОК - создаем книгу, если нет - ForbiddenException('too yang, Bro')
  5. Изменим настройку { nullable: true } колонки ownerId сущности Book, теперь анонимный пользователь не может добавлять книги и мы будем хранить в "книге" ownerId
  6. Делаем необходимые правки в контроллере
  7. Проверяем на фронте

1.1 Инкапсуляция бизнес-логики в методах сущности

Обратим внимание, что в текущей реализации метод сервиса одновременно работает с другими слоями (например, репозиториями) и содержит бизнес-логику приложения. Это приводит к тому, что для тестирования бизнес-логики нам приходится интегрировать в тесты базу данных, что влечет за собой дополнительные настройки и связывает тесты с БД. Однако тестировать работу ORM в тестах, предназначенных для проверки бизнес-логики, нецелесообразно.

Чтобы улучшить структуру кода, декомпозируем его: вынесем логику создания книги в метод модели Book. Это доменная сущность, и она должна управлять процессом своего создания. Для этого оптимально использовать статический метод, поскольку он принадлежит классу. Метод экземпляра здесь не подойдет, так как экземпляр еще не существует, а нам нужно инкапсулировать логику создания именно на уровне класса.

...

Нет доступа к основному конспекту для этого видео