Refactor allowedFilters in inventory and management routes to improve consistency and readability. Cleaned up whitespace and ensured all filters are properly formatted for better query handling across purchase orders, shipments, and filament SKUs.
Some checks failed
farmcontrol/farmcontrol-api/pipeline/head There was a failure building this commit

This commit is contained in:
Tom Butcher 2026-08-01 18:25:59 +01:00
parent c0112d61fb
commit f69c88926c
4 changed files with 74 additions and 83 deletions

View File

@ -5,32 +5,32 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router(); const router = express.Router();
const listAllowedFilters = [ const listAllowedFilters = [
'vendor', 'vendor',
'state', 'state',
'value', 'value',
'vendor._id', 'vendor._id',
'totalAmount', 'totalAmount',
'totalAmountWithTax', 'totalAmountWithTax',
'totalTaxAmount', 'totalTaxAmount',
'shippingAmount', 'shippingAmount',
'shippingAmountWithTax', 'shippingAmountWithTax',
'grandTotalAmount', 'grandTotalAmount',
'createdAt', 'createdAt',
'updatedAt', 'updatedAt',
'_reference' '_reference',
]; ];
const propertiesAllowedFilters = [ const propertiesAllowedFilters = [
'vendor', 'vendor',
'state.type', 'state.type',
'value', 'value',
'vendor._id', 'vendor._id',
'totalAmount', 'totalAmount',
'totalAmountWithTax', 'totalAmountWithTax',
'totalTaxAmount', 'totalTaxAmount',
'shippingAmount', 'shippingAmount',
'shippingAmountWithTax', 'shippingAmountWithTax',
'grandTotalAmount', 'grandTotalAmount',
]; ];
import { import {
listPurchaseOrdersRouteHandler, listPurchaseOrdersRouteHandler,
getPurchaseOrderRouteHandler, getPurchaseOrderRouteHandler,
@ -46,14 +46,13 @@ import {
cancelPurchaseOrderRouteHandler, cancelPurchaseOrderRouteHandler,
searchPurchaseOrdersRouteHandler, searchPurchaseOrdersRouteHandler,
getPurchaseOrderPropertyValuesRouteHandler, getPurchaseOrderPropertyValuesRouteHandler,
getPurchaseOrderNeighborsRouteHandler,
getPurchaseOrderNeighborsRouteHandler
} from '../../services/inventory/purchaseorders.js'; } from '../../services/inventory/purchaseorders.js';
// list of purchase orders // list of purchase orders
router.get('/', isAuthenticated, (req, res) => { router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query; const { page, limit, property, search, sort, order } = req.query;
const filter = getFilter(req.query, listAllowedFilters); const filter = getFilter(req.query, listAllowedFilters);
listPurchaseOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order); listPurchaseOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
}); });
@ -62,7 +61,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
const filter = getFilter(req.query, propertiesAllowedFilters, false); const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {}; var masterFilter = {};
if (req.query.masterFilter) { if (req.query.masterFilter) {
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true); masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
} }
listPurchaseOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter); listPurchaseOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
}); });
@ -76,7 +75,6 @@ router.get('/search', isAuthenticated, (req, res) => {
searchPurchaseOrdersRouteHandler(req, res, search); searchPurchaseOrdersRouteHandler(req, res, search);
}); });
router.post('/', isAuthenticated, (req, res) => { router.post('/', isAuthenticated, (req, res) => {
newPurchaseOrderRouteHandler(req, res); newPurchaseOrderRouteHandler(req, res);
}); });

View File

@ -5,24 +5,24 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router(); const router = express.Router();
const listAllowedFilters = [ const listAllowedFilters = [
'orderType', 'orderType',
'order', 'order',
'state', 'state',
'courierService', 'courierService',
'order._id', 'order._id',
'taxRate', 'taxRate',
'createdAt', 'createdAt',
'updatedAt', 'updatedAt',
'_reference' '_reference',
]; ];
const propertiesAllowedFilters = [ const propertiesAllowedFilters = [
'orderType', 'orderType',
'order', 'order',
'state.type', 'state.type',
'courierService', 'courierService',
'order._id', 'order._id',
'taxRate', 'taxRate',
]; ];
import { import {
listShipmentsRouteHandler, listShipmentsRouteHandler,
getShipmentRouteHandler, getShipmentRouteHandler,
@ -38,14 +38,13 @@ import {
cancelShipmentRouteHandler, cancelShipmentRouteHandler,
searchShipmentsRouteHandler, searchShipmentsRouteHandler,
getShipmentPropertyValuesRouteHandler, getShipmentPropertyValuesRouteHandler,
getShipmentNeighborsRouteHandler,
getShipmentNeighborsRouteHandler
} from '../../services/inventory/shipments.js'; } from '../../services/inventory/shipments.js';
// list of shipments // list of shipments
router.get('/', isAuthenticated, (req, res) => { router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query; const { page, limit, property, search, sort, order } = req.query;
const filter = getFilter(req.query, listAllowedFilters); const filter = getFilter(req.query, listAllowedFilters);
listShipmentsRouteHandler(req, res, page, limit, property, filter, search, sort, order); listShipmentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
}); });
@ -54,7 +53,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
const filter = getFilter(req.query, propertiesAllowedFilters, false); const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {}; var masterFilter = {};
if (req.query.masterFilter) { if (req.query.masterFilter) {
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true); masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
} }
listShipmentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); listShipmentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
}); });
@ -68,7 +67,6 @@ router.get('/search', isAuthenticated, (req, res) => {
searchShipmentsRouteHandler(req, res, search); searchShipmentsRouteHandler(req, res, search);
}); });
router.post('/', isAuthenticated, (req, res) => { router.post('/', isAuthenticated, (req, res) => {
newShipmentRouteHandler(req, res); newShipmentRouteHandler(req, res);
}); });

View File

@ -5,19 +5,19 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router(); const router = express.Router();
const listAllowedFilters = [ const listAllowedFilters = [
'_id', '_id',
'barcode', 'barcode',
'filament', 'filament',
'filament._id', 'filament._id',
'name', 'name',
'color', 'color',
'cost', 'cost',
'costWithTax', 'costWithTax',
'createdAt', 'createdAt',
'updatedAt', 'updatedAt',
'_reference' '_reference',
]; ];
const propertiesAllowedFilters = ['filament', 'filament._id']; const propertiesAllowedFilters = ['filament', 'filament._id', 'diameter'];
import { import {
listFilamentSkusRouteHandler, listFilamentSkusRouteHandler,
getFilamentSkuRouteHandler, getFilamentSkuRouteHandler,
@ -29,13 +29,12 @@ import {
getFilamentSkuHistoryRouteHandler, getFilamentSkuHistoryRouteHandler,
searchFilamentSkusRouteHandler, searchFilamentSkusRouteHandler,
getFilamentSkuPropertyValuesRouteHandler, getFilamentSkuPropertyValuesRouteHandler,
getFilamentSkuNeighborsRouteHandler,
getFilamentSkuNeighborsRouteHandler
} from '../../services/management/filamentskus.js'; } from '../../services/management/filamentskus.js';
router.get('/', isAuthenticated, (req, res) => { router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query; const { page, limit, property, search, sort, order } = req.query;
const filter = getFilter(req.query, listAllowedFilters); const filter = getFilter(req.query, listAllowedFilters);
listFilamentSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order); listFilamentSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
}); });
@ -58,7 +57,6 @@ router.get('/search', isAuthenticated, (req, res) => {
searchFilamentSkusRouteHandler(req, res, search); searchFilamentSkusRouteHandler(req, res, search);
}); });
router.post('/', isAuthenticated, (req, res) => { router.post('/', isAuthenticated, (req, res) => {
newFilamentSkuRouteHandler(req, res); newFilamentSkuRouteHandler(req, res);
}); });

View File

@ -5,14 +5,14 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router(); const router = express.Router();
const listAllowedFilters = [ const listAllowedFilters = [
'client', 'client',
'state', 'state',
'value', 'value',
'client._id', 'client._id',
'createdAt', 'createdAt',
'updatedAt', 'updatedAt',
'_reference' '_reference',
]; ];
const propertiesAllowedFilters = ['client', 'state.type', 'value', 'client._id']; const propertiesAllowedFilters = ['client', 'state.type', 'value', 'client._id'];
import { import {
listSalesOrdersRouteHandler, listSalesOrdersRouteHandler,
@ -29,14 +29,13 @@ import {
cancelSalesOrderRouteHandler, cancelSalesOrderRouteHandler,
searchSalesOrdersRouteHandler, searchSalesOrdersRouteHandler,
getSalesOrderPropertyValuesRouteHandler, getSalesOrderPropertyValuesRouteHandler,
getSalesOrderNeighborsRouteHandler,
getSalesOrderNeighborsRouteHandler
} from '../../services/sales/salesorders.js'; } from '../../services/sales/salesorders.js';
// list of sales orders // list of sales orders
router.get('/', isAuthenticated, (req, res) => { router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query; const { page, limit, property, search, sort, order } = req.query;
const filter = getFilter(req.query, listAllowedFilters); const filter = getFilter(req.query, listAllowedFilters);
listSalesOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order); listSalesOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
}); });
@ -45,7 +44,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
const filter = getFilter(req.query, propertiesAllowedFilters, false); const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {}; var masterFilter = {};
if (req.query.masterFilter) { if (req.query.masterFilter) {
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true); masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
} }
listSalesOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter); listSalesOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
}); });
@ -59,7 +58,6 @@ router.get('/search', isAuthenticated, (req, res) => {
searchSalesOrdersRouteHandler(req, res, search); searchSalesOrdersRouteHandler(req, res, search);
}); });
router.post('/', isAuthenticated, (req, res) => { router.post('/', isAuthenticated, (req, res) => {
newSalesOrderRouteHandler(req, res); newSalesOrderRouteHandler(req, res);
}); });
@ -110,4 +108,3 @@ router.post('/:id/cancel', isAuthenticated, async (req, res) => {
}); });
export default router; export default router;