Merge pull request #19 from kfnawaz/feat/missing-apis

Feat: missing apis #1
This commit is contained in:
bluestreamlds
2022-01-27 17:46:18 +05:30
committed by GitHub
5 changed files with 57 additions and 2 deletions

View File

@@ -1,7 +1,15 @@
const Inventory = require("../models/Inventory"); const Inventory = require("../models/Inventory");
const WidgetFamily = require("../models/WidgetFamily");
const { InventoryTypes } = require("../config/constants"); const { InventoryTypes } = require("../config/constants");
module.exports = { module.exports = {
/**
* Gets the Inventory types
*/
getInventoryTypes: async (req, res, next) => {
res.send({ success: true, data: InventoryTypes });
},
/** /**
* Gets the Inventory data by `id` * Gets the Inventory data by `id`
*/ */
@@ -162,6 +170,11 @@ module.exports = {
res.status(404); res.status(404);
return; return;
} }
for (const inventory of inventoryData) {
inventory["widgetFamilies"] = await WidgetFamily.find({ inventory: inventory._id });
}
res.send({ success: true, data: inventoryData }); res.send({ success: true, data: inventoryData });
} catch (error) { } catch (error) {
next(error); next(error);

View File

@@ -11,6 +11,11 @@ router.post("/", controller.createInventory);
*/ */
router.patch("/:id", controller.updateInventoryByID); router.patch("/:id", controller.updateInventoryByID);
/**
* @route /inventory/types
*/
router.get("/types", controller.getInventoryTypes);
/** /**
* @route /inventory/filter-by-type * @route /inventory/filter-by-type
*/ */

View File

@@ -142,15 +142,24 @@ module.exports = {
* Gets the Items data by filter * Gets the Items data by filter
*/ */
getItemsByFilter: async (req, res, next) => { getItemsByFilter: async (req, res, next) => {
let { family, type, page, perPage } = req.query; let { family, type, inventory, page, perPage } = req.query;
page = page ? parseInt(page) : 0; page = page ? parseInt(page) : 0;
perPage = perPage ? parseInt(perPage) : 10; perPage = perPage ? parseInt(perPage) : 10;
const inventoryFilters = {};
let inventories; let inventories;
let widgetFamilies; let widgetFamilies;
let itemFilters; let itemFilters;
try { try {
if (type && InventoryTypes.includes(type)) { if (type && InventoryTypes.includes(type)) {
inventories = await Inventory.find({ type }); inventoryFilters["type"] = type;
}
if (inventory) {
inventoryFilters["_id"] = inventory;
}
if (Object.keys(inventoryFilters).length > 0) {
inventories = await Inventory.find(inventoryFilters);
} }
const widgetFamilyFilters = []; const widgetFamilyFilters = [];

View File

@@ -26,6 +26,29 @@ module.exports = {
} }
}, },
/**
* Gets the WidgetFamily children data by `id`
*/
getWidgetFamilyChildrenByID: async (req, res, next) => {
const { id } = req.params;
if (!id) {
res.status(400).send("Missing id param");
return;
}
try {
const widgetFamilyData = await WidgetFamily.find({ parent: id });
if (!widgetFamilyData) {
res.status(404).send({ success: false, error: "Widget not found" });
return;
}
res.send({ success: true, data: widgetFamilyData });
} catch (error) {
next(error);
}
},
/** /**
* Create a WidgetFamily * Create a WidgetFamily
*/ */

View File

@@ -21,4 +21,9 @@ router.get("/search-by-inventory", controller.getWidgetFamilyByInventory);
*/ */
router.get("/:id", controller.getWidgetFamilyByID); router.get("/:id", controller.getWidgetFamilyByID);
/**
* @route /widgetFamily/:id/children
*/
router.get("/:id/children", controller.getWidgetFamilyChildrenByID);
module.exports = router; module.exports = router;