- 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
|
|
};
|