farmcontrol-api/src/routes/management/documenttemplates.js
Tom Butcher 30d1469204
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
Refactor query handling in various routes to standardize sort property and order parameters
This commit updates multiple route handlers across the management and inventory modules to replace the `sort` and `order` parameters with `sortProperty` and `sortOrder`. This change enhances consistency in query handling and improves the clarity of the code. Additionally, the `getFilter` function is modified to accommodate these new parameters, ensuring that filtering logic remains intact. Corresponding tests have been updated to verify the correct functionality of the modified routes.
2026-08-22 02:36:05 +01:00

122 lines
4.2 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 = [
'name',
'tags',
'active',
'global',
'parent',
'parent._id',
'documentSize',
'documentSize._id',
'objectType',
'createdAt',
'updatedAt',
'_reference',
];
const listAllowedSorters = [
'name',
'parent',
'documentSize',
'createdAt',
'updatedAt',
'active',
'global',
'objectType',
];
const propertiesAllowedFilters = ['documentSize', 'tags'];
import {
listDocumentTemplatesRouteHandler,
getDocumentTemplateRouteHandler,
editDocumentTemplateRouteHandler,
newDocumentTemplateRouteHandler,
deleteDocumentTemplateRouteHandler,
listDocumentTemplatesByPropertiesRouteHandler,
getDocumentTemplateStatsRouteHandler,
getDocumentTemplateHistoryRouteHandler,
getDocumentTemplatePropertyValuesRouteHandler,
searchDocumentTemplatesRouteHandler,
getDocumentTemplateNeighborsRouteHandler,
previewDocumentTemplateRouteHandler,
downloadDocumentTemplateRouteHandler,
formatDocumentTemplateRouteHandler,
} from '../../services/management/documenttemplates.js';
// list of document templates
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listDocumentTemplatesRouteHandler(req, res, page, limit, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder);
});
router.get('/properties', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
}
listDocumentTemplatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
const { property } = req.query;
getDocumentTemplatePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
const { search } = req.query;
searchDocumentTemplatesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('documentTemplate', 'new'), async (req, res) => {
newDocumentTemplateRouteHandler(req, res);
});
router.post('/format', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
formatDocumentTemplateRouteHandler(req, res);
});
// get document template stats
router.get('/stats', isAuthenticated, async (req, res) => {
getDocumentTemplateStatsRouteHandler(req, res);
});
// get document template history
router.get('/history', isAuthenticated, async (req, res) => {
getDocumentTemplateHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sortProperty, sortOrder, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
});
router.post('/:id/preview', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
previewDocumentTemplateRouteHandler(req, res);
});
router.post('/:id/download', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
downloadDocumentTemplateRouteHandler(req, res);
});
router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentTemplateRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('documentTemplate', 'edit'), async (req, res) => {
editDocumentTemplateRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
deleteDocumentTemplateRouteHandler(req, res);
});
export default router;