Enhance allowedFilters across multiple routes to include 'createdAt', 'updatedAt', and '_reference' for improved filtering capabilities. This update applies to finance, inventory, management, and sales modules, ensuring consistency and better query handling.
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good

This commit is contained in:
Tom Butcher 2026-08-01 14:26:40 +01:00
parent c233be5d80
commit c043ad7a86
47 changed files with 348 additions and 48 deletions

View File

@ -13,6 +13,9 @@ const listAllowedFilters = [
'order',
'order._id',
'orderType',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'vendor',

View File

@ -12,6 +12,9 @@ const listAllowedFilters = [
'client._id',
'invoice',
'invoice._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'vendor',

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['taxRate', 'transactionType', 'transaction', 'transactionDate'];
const listAllowedFilters = [
'taxRate',
'transactionType',
'transaction',
'transactionDate',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['taxRate', 'transactionType', 'transaction'];
import {
listTaxRecordsRouteHandler,

View File

@ -14,6 +14,9 @@ const listAllowedFilters = [
'filamentSku._id',
'stockLocation',
'stockLocation._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'filament',

View File

@ -14,6 +14,10 @@ const listAllowedFilters = [
'orderType',
'shipment',
'shipment._id',
'state',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'name',

View File

@ -12,6 +12,9 @@ const listAllowedFilters = [
'partSku._id',
'stockLocation',
'stockLocation._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['part', 'state.type'];
import {

View File

@ -11,6 +11,9 @@ const listAllowedFilters = [
'productSku._id',
'stockLocation',
'stockLocation._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['productSku', 'state.type'];
import {

View File

@ -15,6 +15,9 @@ const listAllowedFilters = [
'shippingAmount',
'shippingAmountWithTax',
'grandTotalAmount',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'vendor',

View File

@ -4,7 +4,17 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['orderType', 'order', 'state', 'courierService', 'order._id', 'taxRate'];
const listAllowedFilters = [
'orderType',
'order',
'state',
'courierService',
'order._id',
'taxRate',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'orderType',
'order',

View File

@ -15,7 +15,15 @@ import {
getStockAuditNeighborsRouteHandler,
} from '../../services/inventory/stockaudits.js';
const listAllowedFilters = ['status', 'type', 'createdBy'];
const listAllowedFilters = [
'status',
'type',
'createdBy',
'state',
'createdAt',
'updatedAt',
'_reference'
];
// List stock audits
router.get('/', isAuthenticated, (req, res) => {

View File

@ -4,7 +4,13 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['owner._id', 'parent._id'];
const listAllowedFilters = [
'owner._id',
'parent._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['owner._id', 'parent._id'];
import {
listStockEventsRouteHandler,

View File

@ -4,7 +4,7 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name'];
const listAllowedFilters = ['name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
import {
listStockLocationsRouteHandler,

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['state', 'state.type', 'postedAt'];
const listAllowedFilters = [
'state',
'state.type',
'postedAt',
'name',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['state.type'];
import {
listStockTransfersRouteHandler,

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'user', 'active', 'user._id'];
const listAllowedFilters = [
'_id',
'name',
'user',
'active',
'user._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['name', 'user', 'active'];
import {
listAppPasswordsRouteHandler,

View File

@ -15,7 +15,14 @@ const router = express.Router();
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, sort, order } = req.query;
const allowedFilters = ['parent._id', 'owner._id', 'operation'];
const allowedFilters = [
'parent._id',
'owner._id',
'operation',
'createdAt',
'updatedAt',
'_reference'
];
var filter = {};

View File

@ -4,7 +4,17 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country'];
const listAllowedFilters = [
'name',
'website',
'email',
'phone',
'contact',
'country',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country'];
import {
listCouriersRouteHandler,

View File

@ -14,6 +14,9 @@ const listAllowedFilters = [
'deliveryTime',
'cost',
'costWithTax',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'_id',

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'width', 'height'];
const listAllowedFilters = [
'name',
'width',
'height',
'state',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [];
import {
listDocumentJobsRouteHandler,

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'tags', 'active', 'isGlobal'];
const listAllowedFilters = [
'name',
'tags',
'active',
'isGlobal',
'state',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['tags'];
import {
listDocumentPrintersRouteHandler,

View File

@ -4,7 +4,14 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'width', 'height'];
const listAllowedFilters = [
'name',
'width',
'height',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [];
import {
listDocumentSizesRouteHandler,

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'tags', 'active', 'global', 'objectType'];
const listAllowedFilters = [
'name',
'tags',
'active',
'global',
'objectType',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['documentSize', 'tags'];
import {
listDocumentTemplatesRouteHandler,

View File

@ -4,7 +4,17 @@ import { convertPropertiesString, getFilter, parseFilter } from '../../utils.js'
const router = express.Router();
const listAllowedFilters = ['_id', 'material', 'material._id', 'diameter', 'name', 'cost'];
const listAllowedFilters = [
'_id',
'material',
'material._id',
'diameter',
'name',
'cost',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['diameter', 'material'];
import {
listFilamentsRouteHandler,

View File

@ -4,7 +4,19 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'barcode', 'filament', 'filament._id', 'name', 'color', 'cost', 'costWithTax'];
const listAllowedFilters = [
'_id',
'barcode',
'filament',
'filament._id',
'name',
'color',
'cost',
'costWithTax',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['filament', 'filament._id'];
import {
listFilamentSkusRouteHandler,

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'type', 'size', 'extension'];
const listAllowedFilters = [
'_id',
'name',
'type',
'size',
'extension',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['type', 'extension'];
import {
listFilesRouteHandler,

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'tags'];
const listAllowedFilters = [
'_id',
'name',
'tags',
'state',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['tags'];
import {
listHostsRouteHandler,
@ -17,14 +25,13 @@ import {
getHostHistoryRouteHandler,
searchHostsRouteHandler,
getHostPropertyValuesRouteHandler,
getHostNeighborsRouteHandler
getHostNeighborsRouteHandler,
} from '../../services/management/hosts.js';
// list of hosts
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listHostsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});

View File

@ -4,7 +4,14 @@ import { convertPropertiesString, getFilter, parseFilter } from '../../utils.js'
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'tags'];
const listAllowedFilters = [
'_id',
'name',
'tags',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['name', 'tags'];
import {
listMaterialsRouteHandler,

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'active', 'color'];
const listAllowedFilters = [
'_id',
'name',
'active',
'color',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['active', 'color'];
import {
listNoteTypesRouteHandler,

View File

@ -4,7 +4,14 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['product._id', '_id', 'name'];
const listAllowedFilters = [
'product._id',
'_id',
'name',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['product._id'];
import {
listPartsRouteHandler,

View File

@ -4,7 +4,18 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'barcode', 'part', 'part._id', 'name', 'cost', 'price'];
const listAllowedFilters = [
'_id',
'barcode',
'part',
'part._id',
'name',
'cost',
'price',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['part', 'part._id'];
import {
listPartSkusRouteHandler,

View File

@ -18,7 +18,7 @@ import {
const router = express.Router();
const listAllowedFilters = ['_id', 'name'];
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, (req, res) => {

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'globalPrice', 'productCategory', 'productCategory._id'];
const listAllowedFilters = [
'_id',
'name',
'globalPrice',
'productCategory',
'productCategory._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [];
import {
listProductsRouteHandler,

View File

@ -4,7 +4,18 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'barcode', 'product', 'product._id', 'name', 'cost', 'price'];
const listAllowedFilters = [
'_id',
'barcode',
'product',
'product._id',
'name',
'cost',
'price',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['product', 'product._id'];
import {
listProductSkusRouteHandler,

View File

@ -4,7 +4,16 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'rate', 'rateType', 'active', 'country'];
const listAllowedFilters = [
'name',
'rate',
'rateType',
'active',
'country',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['rateType', 'country', 'active'];
import {
listTaxRatesRouteHandler,

View File

@ -4,7 +4,16 @@ import { convertPropertiesString, getFilter } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'username', 'firstName', 'lastName', 'email'];
const listAllowedFilters = [
'name',
'username',
'firstName',
'lastName',
'email',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [];
import {
listUsersRouteHandler,

View File

@ -4,7 +4,14 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
const listAllowedFilters = [
'country',
'active',
'createdAt',
'updatedAt',
'name',
'_reference'
];
const propertiesAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
import {
listVendorsRouteHandler,

View File

@ -17,7 +17,12 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['parent._id'];
const listAllowedFilters = [
'parent._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['parent'];
// list of notes

View File

@ -16,7 +16,7 @@ import {
const router = express.Router();
const listAllowedFilters = ['_id', 'name'];
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, (req, res) => {

View File

@ -3,7 +3,17 @@ import { isAuthenticated } from '../../keycloak.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'name', 'filament', 'filament._id', 'filamentSku', 'filamentSku._id'];
const listAllowedFilters = [
'_id',
'name',
'filament',
'filament._id',
'filamentSku',
'filamentSku._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['filament', 'filament._id', 'filamentSku', 'filamentSku._id'];
import {
listGCodeFilesRouteHandler,

View File

@ -3,7 +3,15 @@ import { isAuthenticated } from '../../keycloak.js';
const router = express.Router();
const listAllowedFilters = ['state', 'gcodeFile._id', 'quantity', '_id', '_reference'];
const listAllowedFilters = [
'state',
'gcodeFile._id',
'quantity',
'_id',
'_reference',
'createdAt',
'updatedAt'
];
const propertiesAllowedFilters = ['state'];
import {
listJobsRouteHandler,

View File

@ -16,7 +16,7 @@ import {
const router = express.Router();
const listAllowedFilters = ['_id', 'name'];
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, (req, res) => {

View File

@ -17,15 +17,17 @@ import {
import { convertPropertiesString, getFilter } from '../../utils.js';
const listAllowedFilters = [
'tags',
'host._id',
'active',
'online',
'name',
'_id',
'_reference',
'state',
];
'tags',
'host._id',
'active',
'online',
'name',
'_id',
'_reference',
'state',
'createdAt',
'updatedAt'
];
const propertiesAllowedFilters = ['tags'];
// list of printers
router.get('/', isAuthenticated, (req, res) => {

View File

@ -3,7 +3,15 @@ import { isAuthenticated } from '../../keycloak.js';
const router = express.Router();
const listAllowedFilters = ['_id', 'job._id', 'printer._id', '_reference', 'state'];
const listAllowedFilters = [
'_id',
'job._id',
'printer._id',
'_reference',
'state',
'createdAt',
'updatedAt'
];
const propertiesAllowedFilters = ['job'];
import {
listSubJobsRouteHandler,

View File

@ -4,7 +4,14 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
const listAllowedFilters = [
'country',
'active',
'createdAt',
'updatedAt',
'name',
'_reference'
];
const propertiesAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
import {
listClientsRouteHandler,

View File

@ -14,6 +14,7 @@ const listAllowedFilters = [
'state.type',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'product',

View File

@ -13,6 +13,7 @@ const listAllowedFilters = [
'state.type',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = [
'listing',

View File

@ -4,7 +4,17 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt'];
const listAllowedFilters = [
'name',
'provider',
'active',
'connected',
'state.type',
'createdAt',
'updatedAt',
'state',
'_reference'
];
const propertiesAllowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt'];
import {
listMarketplacesRouteHandler,

View File

@ -4,7 +4,15 @@ import { getFilter, convertPropertiesString } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['client', 'state', 'value', 'client._id'];
const listAllowedFilters = [
'client',
'state',
'value',
'client._id',
'createdAt',
'updatedAt',
'_reference'
];
const propertiesAllowedFilters = ['client', 'state.type', 'value', 'client._id'];
import {
listSalesOrdersRouteHandler,