- requestWineController validates wine object and returns helpfull error repsonse if anything is missing. - requestWine uses new endpoint and calls api from within itself. - Linting.
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const path = require("path");
 | 
						|
const requestRepository = require(path.join(__dirname, "../request"));
 | 
						|
 | 
						|
function addRequest(req, res) {
 | 
						|
  const { wine } = req.body;
 | 
						|
 | 
						|
  return verifyWineValues(wine)
 | 
						|
    .then(_ => requestRepository.addNew(wine))
 | 
						|
    .then(wine =>
 | 
						|
      res.json({
 | 
						|
        message: "Successfully added new request",
 | 
						|
        wine: wine,
 | 
						|
        success: true
 | 
						|
      })
 | 
						|
    )
 | 
						|
    .catch(error => {
 | 
						|
      const { message, statusCode } = error;
 | 
						|
 | 
						|
      return res.status(statusCode || 500).send({
 | 
						|
        success: false,
 | 
						|
        message: message || "Unable to add requested wine."
 | 
						|
      });
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
function allRequests(req, res) {
 | 
						|
  return requestRepository
 | 
						|
    .getAll()
 | 
						|
    .then(wines =>
 | 
						|
      res.json({
 | 
						|
        wines: wines,
 | 
						|
        success: true
 | 
						|
      })
 | 
						|
    )
 | 
						|
    .catch(error => {
 | 
						|
      const { message, statusCode } = error;
 | 
						|
      return res.status(statusCode || 500).json({
 | 
						|
        success: false,
 | 
						|
        message: message || "Unable to fetch all requested wines."
 | 
						|
      });
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
function deleteRequest(req, res) {
 | 
						|
  const { id } = req.params;
 | 
						|
 | 
						|
  return requestRepository
 | 
						|
    .deleteById(id)
 | 
						|
    .then(_ =>
 | 
						|
      res.json({
 | 
						|
        message: `Slettet vin med id: ${id}`,
 | 
						|
        success: true
 | 
						|
      })
 | 
						|
    )
 | 
						|
    .catch(error => {
 | 
						|
      const { statusCode, message } = error;
 | 
						|
 | 
						|
      return res.status(statusCode || 500).send({
 | 
						|
        success: false,
 | 
						|
        message: message || "Unable to delete requested wine."
 | 
						|
      });
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
function verifyWineValues(wine) {
 | 
						|
  return new Promise((resolve, reject) => {
 | 
						|
    if (wine == undefined) {
 | 
						|
      reject({
 | 
						|
        message: "No wine object found in request body.",
 | 
						|
        status: 400
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    if (wine.id == null) {
 | 
						|
      reject({
 | 
						|
        message: "Wine object missing value id.",
 | 
						|
        status: 400
 | 
						|
      });
 | 
						|
    } else if (wine.name == null) {
 | 
						|
      reject({
 | 
						|
        message: "Wine object missing value name.",
 | 
						|
        status: 400
 | 
						|
      });
 | 
						|
    } else if (wine.vivinoLink == null) {
 | 
						|
      reject({
 | 
						|
        message: "Wine object missing value vivinoLink.",
 | 
						|
        status: 400
 | 
						|
      });
 | 
						|
    } else if (wine.image == null) {
 | 
						|
      reject({
 | 
						|
        message: "Wine object missing value image.",
 | 
						|
        status: 400
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    resolve();
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  addRequest,
 | 
						|
  allRequests,
 | 
						|
  deleteRequest
 | 
						|
};
 |