All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
This commit introduces a new `deleteObjects` function in the database module, allowing for bulk deletion of objects based on specified filters and states. Additionally, new route handlers for deleting invoices, payment policies, payments, tax records, filament stocks, order items, part stocks, product stocks, purchase orders, shipments, stock audits, stock locations, stock transfers, app passwords, couriers, courier services, document printers, document sizes, document templates, email accounts, email templates, filaments, filament SKUs, files, hosts, materials, note types, parts, part SKUs, permission settings, product categories, products, and vendor entities are added. Each route supports deletion based on filters, enhancing the application's data management capabilities.
153 lines
4.1 KiB
JavaScript
153 lines
4.1 KiB
JavaScript
import express from 'express';
|
|
import { isAuthenticated } from '../../keycloak.js';
|
|
import { checkPermissions } from '../../database/permissions.js';
|
|
|
|
const router = express.Router();
|
|
|
|
const listAllowedFilters = [
|
|
'state',
|
|
'gcodeFile',
|
|
'gcodeFile._id',
|
|
'quantity',
|
|
'_id',
|
|
'_reference',
|
|
'createdAt',
|
|
'updatedAt',
|
|
'startedAt',
|
|
'finishedAt',
|
|
];
|
|
const listAllowedSorters = [
|
|
'createdAt',
|
|
'state',
|
|
'quantity',
|
|
'gcodeFile',
|
|
'updatedAt',
|
|
'startedAt',
|
|
'finishedAt',
|
|
];
|
|
const propertiesAllowedFilters = ['state'];
|
|
import {
|
|
listJobsRouteHandler,
|
|
listJobsByPropertiesRouteHandler,
|
|
getJobRouteHandler,
|
|
newJobRouteHandler,
|
|
deleteJobRouteHandler,
|
|
deleteJobByFilterRouteHandler,
|
|
editJobRouteHandler,
|
|
getJobStatsRouteHandler,
|
|
getJobHistoryRouteHandler,
|
|
searchJobsRouteHandler,
|
|
getJobPropertyValuesRouteHandler,
|
|
getJobNeighborsRouteHandler,
|
|
} from '../../services/production/jobs.js';
|
|
import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
|
|
import { jobModel } from '../../database/schemas/production/job.schema.js';
|
|
|
|
// list of jobs
|
|
router.get('/', isAuthenticated, checkPermissions('job', 'list'), async (req, res) => {
|
|
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
|
|
const filter = await getFilter(req.query, listAllowedFilters, true, jobModel);
|
|
listJobsRouteHandler(
|
|
req,
|
|
res,
|
|
page,
|
|
limit,
|
|
property,
|
|
filter,
|
|
search,
|
|
getSort(sortProperty, listAllowedSorters),
|
|
sortOrder
|
|
);
|
|
});
|
|
|
|
router.get('/properties', checkPermissions('job', '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);
|
|
}
|
|
listJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
|
});
|
|
|
|
router.get('/values', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
|
|
const { property } = req.query;
|
|
const filter = await getFilter(req.query, listAllowedFilters, true, jobModel);
|
|
var masterFilter = {};
|
|
if (req.query.masterFilter) {
|
|
masterFilter = await getFilter(
|
|
JSON.parse(req.query.masterFilter),
|
|
listAllowedFilters,
|
|
true,
|
|
jobModel
|
|
);
|
|
}
|
|
getJobPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
|
});
|
|
router.get('/search', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
|
|
const { search } = req.query;
|
|
searchJobsRouteHandler(req, res, search);
|
|
});
|
|
|
|
router.post('/', isAuthenticated, checkPermissions('job', 'new'), async (req, res) => {
|
|
newJobRouteHandler(req, res);
|
|
});
|
|
|
|
// get job stats
|
|
router.get('/stats', isAuthenticated, async (req, res) => {
|
|
getJobStatsRouteHandler(req, res);
|
|
});
|
|
|
|
// get job history
|
|
router.get('/history', isAuthenticated, async (req, res) => {
|
|
getJobHistoryRouteHandler(req, res);
|
|
});
|
|
|
|
router.get('/neighbors', isAuthenticated, async (req, res) => {
|
|
const { property, search, sortProperty, sortOrder, id } = req.query;
|
|
const filter = await getFilter(req.query, listAllowedFilters);
|
|
getJobNeighborsRouteHandler(
|
|
req,
|
|
res,
|
|
property,
|
|
filter,
|
|
search,
|
|
getSort(sortProperty, listAllowedSorters),
|
|
sortOrder,
|
|
id
|
|
);
|
|
});
|
|
|
|
router.get('/:id', isAuthenticated, checkPermissions('job', 'info'), async (req, res) => {
|
|
getJobRouteHandler(req, res);
|
|
});
|
|
|
|
router.put('/:id', isAuthenticated, checkPermissions('job', 'edit'), async (req, res) => {
|
|
editJobRouteHandler(req, res);
|
|
});
|
|
|
|
router.delete(
|
|
'/delete',
|
|
isAuthenticated,
|
|
checkPermissions('job', 'delete'),
|
|
async (req, res) => {
|
|
const filter = await getFilter(
|
|
req.query.filter ? JSON.parse(req.query.filter) : {},
|
|
listAllowedFilters,
|
|
true
|
|
);
|
|
const masterFilter = await getFilter(
|
|
req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {},
|
|
listAllowedFilters,
|
|
true
|
|
);
|
|
deleteJobByFilterRouteHandler(req, res, filter, masterFilter);
|
|
}
|
|
);
|
|
|
|
router.delete('/:id', isAuthenticated, async (req, res) => {
|
|
deleteJobRouteHandler(req, res);
|
|
});
|
|
|
|
export default router;
|