Сделайте код контроллера более чистым с помощью классов [closed]

Я написал фрагмент кода для создания контроллера. Как видите, код запутан, и я хотел бы сделать его чище, используя классы Es6.

Вот фрагмент кода контроллера:

const createRental = async (req, res) => {
  const customer = await Customer.findById(req.body.customerId);
  if (!customer)
    return res
      .status(StatusCodes.BAD_REQUEST)
      .json({ message: "Customer doesn't exist!" });

  const movie = await Movie.findById(req.body.movieId);
  if (!movie)
    return res
      .status(StatusCodes.BAD_REQUEST)
      .json({ message: "Movie doesn't exists!" });

  if (movie.numberInStock === 0)
    return res
      .status(StatusCodes.NOT_FOUND)
      .json({ message: "Film is niet op voorraad!" });

  const rental = await new Rental({
    customer: {
      _id: customer._id,
      name: customer.name,
      phone: customer.phone,
    },
    movie: {
      _id: movie._id,
      title: movie.title,
      dailyRentalRate: movie.dailyRentalRate,
    },
  });

  try {
    new Fawn.Task()
      .save("rentals", rental)
      .update("movies", { _id: movie._id }, { $inc: { numberInStock: -1 } })
      .run();
  } catch (ex) {
    res
      .status(StatusCodes.INTERNAL_SERVER_ERROR)
      .json({ message: "Something failed!" });
  }

  res.status(StatusCodes.OK).json({ rental });
};

Хотели бы иметь классы клиентов, фильмы, прокат, где классы получают req в качестве параметра, где я могу использовать эти классы в createRental функция контроллера и класс, который расширяет Fawn для выполнения операции транзакции. Что касается модели, я использовал mongoose в качестве библиотеки моделирования объектных данных (ODM).

Как я могу достичь своей цели?

0

Добавить комментарий

Ваш адрес email не будет опубликован.