feat: added warehouse image management apis

This commit is contained in:
Sathishkumar Krishnan
2022-03-01 01:59:03 +05:30
parent 82801f6ccb
commit adc3c0b284
3 changed files with 77 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
const Warehouse = require("../models/Warehouse"); const Warehouse = require("../models/Warehouse");
const mongoose = require("mongoose"); const mongoose = require("mongoose");
const { S3 } = require("./../config/aws");
module.exports = { module.exports = {
/** /**
@@ -49,6 +50,18 @@ module.exports = {
res.status(404).send({ success: false, message: "not found" }); res.status(404).send({ success: false, message: "not found" });
return; return;
} }
const images = req.files;
for (let i = 0; i < images.length; i++) {
const url = await S3.uploadFile(
`warehouse/${warehouseData._id.toString()}-${Date.now()}-${i}.${images[i].originalname.split(".").slice(-1).pop()}`,
images[i].path
);
warehouseData.images ||= [];
warehouseData.images.push({ url });
}
warehouseData.save();
res.send({ success: true, message: warehouseData }); res.send({ success: true, message: warehouseData });
} catch (error) { } catch (error) {
next(error); next(error);
@@ -144,4 +157,48 @@ module.exports = {
next(error); next(error);
} }
}, },
addImageToWarehouse: async (req, res, next) => {
const { id } = req.params;
if (!mongoose.isValidObjectId(id)) {
res.status(400).send({ success: false, error: "invalid id" });
}
const warehouse = await Warehouse.findById(id);
if (!warehouse) {
res.status(404).send({ success: false, error: "warehouse not found" });
}
const image = req.file;
const url = await S3.uploadFile(
`warehouse/${warehouse._id.toString()}-${Date.now()}-0.${image.originalname.split(".").slice(-1).pop()}`,
image.path
);
warehouse.images ||= [];
warehouse.images.push({ url });
await warehouse.save();
res.send({ success: true, data: warehouse });
},
removeImageFromWarehouse: async (req, res, next) => {
const { id, image_id } = req.params;
if (!mongoose.isValidObjectId(id)) {
res.status(400).send({ success: false, error: "invalid id" });
}
if (!mongoose.isValidObjectId(image_id)) {
res.status(400).send({ success: false, error: "invalid image_id" });
}
const warehouse = await Warehouse.findById(id);
if (!warehouse) {
res.status(404).send({ success: false, error: "warehouse not found" });
}
warehouse.images = warehouse.images.filter((warehouseImage) => {
return warehouseImage._id.toString() != image_id;
});
await warehouse.save();
res.send({ success: true, data: warehouse });
},
}; };

View File

@@ -20,7 +20,18 @@ router.get("/:id/zones", controller.getWarehouseZonesByID);
/** /**
* @route /warehouse/ * @route /warehouse/
*/ */
router.post("/", controller.createWarehouse); router.post("/", upload.any("images"), controller.createWarehouse);
/**
* @route /warehouse/:id/image
*/
router.post("/:id/image", upload.single("image"), controller.addImageToWarehouse);
/**
* @route /warehouse/:id/image/:image_id
*/
router.delete("/:id/image/:image_id", controller.removeImageFromWarehouse);
/** /**
* @route /warehouse/add-image * @route /warehouse/add-image

View File

@@ -1,5 +1,12 @@
const mongoose = require("mongoose"); const mongoose = require("mongoose");
const WarehouseImage = new mongoose.Schema({
url: {
type: String,
trim: true,
},
});
const schema = new mongoose.Schema( const schema = new mongoose.Schema(
{ {
name: { name: {
@@ -16,6 +23,7 @@ const schema = new mongoose.Schema(
type: String, type: String,
trim: true, trim: true,
}, },
images: [WarehouseImage],
company_id: { company_id: {
type: mongoose.Schema.Types.ObjectId, type: mongoose.Schema.Types.ObjectId,
ref: "Company", ref: "Company",