feat: added warehouse image management apis
This commit is contained in:
@@ -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 });
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user