Tom Butcher 850c721867
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
Refactor allowed filters and sorters across various routes to enhance data handling
This commit updates the allowed filters and sorters in multiple routes, including invoices, payment policies, inventory, management, and sales. It removes unnecessary filters, adds new ones for improved categorization, and ensures consistency in the data structure. These changes aim to streamline data retrieval and enhance the overall functionality of the application.
2026-09-01 19:54:44 +01:00

122 lines
3.7 KiB
JavaScript

import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = [
'_id',
'barcode',
'product',
'product._id',
'name',
'cost',
'costWithTax',
'price',
'priceWithTax',
'margin',
'createdAt',
'updatedAt',
'_reference',
];
const listAllowedSorters = [
'barcode',
'product',
'name',
'cost',
'costWithTax',
'price',
'priceWithTax',
'margin',
'createdAt',
'updatedAt',
];
const propertiesAllowedFilters = ['product', 'product._id'];
import {
listProductSkusRouteHandler,
getProductSkuRouteHandler,
editProductSkuRouteHandler,
newProductSkuRouteHandler,
deleteProductSkuRouteHandler,
listProductSkusByPropertiesRouteHandler,
getProductSkuStatsRouteHandler,
getProductSkuHistoryRouteHandler,
searchProductSkusRouteHandler,
getProductSkuPropertyValuesRouteHandler,
getProductSkuNeighborsRouteHandler
} from '../../services/management/productskus.js';
router.get('/', isAuthenticated, checkPermissions('productSku', 'list'), async (req, res) => {
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listProductSkusRouteHandler(req, res, page, limit, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder);
});
router.get('/properties', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
}
listProductSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get(
'/values',
checkPermissions('productSku', 'list'),
isAuthenticated,
async (req, res) => {
const { property } = req.query;
const filter = await getFilter(req.query, listAllowedFilters, true);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = await getFilter(
JSON.parse(req.query.masterFilter),
listAllowedFilters,
true
);
}
getProductSkuPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
}
);
router.get('/search', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
const { search } = req.query;
searchProductSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('product', 'newProductSku'), async (req, res) => {
newProductSkuRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
getProductSkuStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
getProductSkuHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sortProperty, sortOrder, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getProductSkuNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
getProductSkuRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('productSku', 'edit'), async (req, res) => {
editProductSkuRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
deleteProductSkuRouteHandler(req, res);
});
export default router;