Add bulk delete functionality for various entities with filter support
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.
This commit is contained in:
Tom Butcher 2026-09-13 17:12:59 +01:00
parent 58cb444bf2
commit c679066504
135 changed files with 2238 additions and 2 deletions

View File

@ -1643,6 +1643,73 @@ export const deleteObject = async (
} }
}; };
export const deleteObjects = async ({
model,
filter = {},
user = null,
checkUnused = false,
states,
}) => {
try {
const convertedFilter =
filter && Object.keys(filter).length > 0
? convertObjectIdStringsInFilter(filter)
: {};
const objects = await model.find(convertedFilter);
const errors = [];
let deletedCount = 0;
for (const object of objects) {
const id = object._id;
const state = object.state?.type ?? object.state;
if (Array.isArray(states) && !states.includes(state)) {
errors.push({
id: String(id),
status: 400,
error: `Object must be in one of these states: ${states.join(', ')}.`,
});
continue;
}
try {
const result = await deleteObject({
model,
id,
user,
checkUnused,
});
if (result?.error) {
errors.push({
id: String(id),
status: result.code || 500,
...result,
});
continue;
}
deletedCount += 1;
} catch (error) {
errors.push({
id: String(id),
status: 500,
error: error.message || 'Delete failed.',
});
}
}
return {
matchedCount: objects.length,
deletedCount,
failedCount: errors.length,
errors,
};
} catch (error) {
logger.error('deleteObjects error:', error);
return { error: error.message, code: 500 };
}
};
export const flushFile = async ({ id, user }) => { export const flushFile = async ({ id, user }) => {
try { try {
logger.info(`Starting file deletion process for file ID: ${id}`); logger.info(`Starting file deletion process for file ID: ${id}`);

View File

@ -38,6 +38,7 @@ import {
editMultipleInvoicesRouteHandler, editMultipleInvoicesRouteHandler,
newInvoiceRouteHandler, newInvoiceRouteHandler,
deleteInvoiceRouteHandler, deleteInvoiceRouteHandler,
deleteInvoiceByFilterRouteHandler,
listInvoicesByPropertiesRouteHandler, listInvoicesByPropertiesRouteHandler,
getInvoiceStatsRouteHandler, getInvoiceStatsRouteHandler,
getInvoiceHistoryRouteHandler, getInvoiceHistoryRouteHandler,
@ -141,6 +142,25 @@ router.put('/:id', isAuthenticated, checkPermissions('invoice', 'edit'), async (
editInvoiceRouteHandler(req, res); editInvoiceRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('invoice', '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
);
deleteInvoiceByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteInvoiceRouteHandler(req, res); deleteInvoiceRouteHandler(req, res);
}); });

View File

@ -8,6 +8,7 @@ import {
editPaymentPolicyRouteHandler, editPaymentPolicyRouteHandler,
newPaymentPolicyRouteHandler, newPaymentPolicyRouteHandler,
deletePaymentPolicyRouteHandler, deletePaymentPolicyRouteHandler,
deletePaymentPolicyByFilterRouteHandler,
listPaymentPoliciesByPropertiesRouteHandler, listPaymentPoliciesByPropertiesRouteHandler,
getPaymentPolicyStatsRouteHandler, getPaymentPolicyStatsRouteHandler,
getPaymentPolicyHistoryRouteHandler, getPaymentPolicyHistoryRouteHandler,
@ -122,6 +123,25 @@ router.put('/:id', isAuthenticated, checkPermissions('paymentPolicy', 'edit'), a
editPaymentPolicyRouteHandler(req, res); editPaymentPolicyRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('paymentPolicy', '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
);
deletePaymentPolicyByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePaymentPolicyRouteHandler(req, res); deletePaymentPolicyRouteHandler(req, res);
}); });

View File

@ -35,6 +35,7 @@ import {
editMultiplePaymentsRouteHandler, editMultiplePaymentsRouteHandler,
newPaymentRouteHandler, newPaymentRouteHandler,
deletePaymentRouteHandler, deletePaymentRouteHandler,
deletePaymentByFilterRouteHandler,
listPaymentsByPropertiesRouteHandler, listPaymentsByPropertiesRouteHandler,
getPaymentStatsRouteHandler, getPaymentStatsRouteHandler,
getPaymentHistoryRouteHandler, getPaymentHistoryRouteHandler,
@ -122,6 +123,25 @@ router.put('/:id', isAuthenticated, checkPermissions('payment', 'edit'), async (
editPaymentRouteHandler(req, res); editPaymentRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('payment', '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
);
deletePaymentByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePaymentRouteHandler(req, res); deletePaymentRouteHandler(req, res);
}); });

View File

@ -24,6 +24,7 @@ import {
editTaxRecordRouteHandler, editTaxRecordRouteHandler,
newTaxRecordRouteHandler, newTaxRecordRouteHandler,
deleteTaxRecordRouteHandler, deleteTaxRecordRouteHandler,
deleteTaxRecordByFilterRouteHandler,
listTaxRecordsByPropertiesRouteHandler, listTaxRecordsByPropertiesRouteHandler,
getTaxRecordStatsRouteHandler, getTaxRecordStatsRouteHandler,
getTaxRecordHistoryRouteHandler, getTaxRecordHistoryRouteHandler,
@ -102,6 +103,25 @@ router.put('/:id', isAuthenticated, checkPermissions('taxRecord', 'edit'), async
editTaxRecordRouteHandler(req, res); editTaxRecordRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('taxRecord', '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
);
deleteTaxRecordByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteTaxRecordRouteHandler(req, res); deleteTaxRecordRouteHandler(req, res);
}); });

View File

@ -34,6 +34,7 @@ import {
editMultipleFilamentStocksRouteHandler, editMultipleFilamentStocksRouteHandler,
newFilamentStockRouteHandler, newFilamentStockRouteHandler,
deleteFilamentStockRouteHandler, deleteFilamentStockRouteHandler,
deleteFilamentStockByFilterRouteHandler,
postFilamentStockRouteHandler, postFilamentStockRouteHandler,
listFilamentStocksByPropertiesRouteHandler, listFilamentStocksByPropertiesRouteHandler,
getFilamentStockStatsRouteHandler, getFilamentStockStatsRouteHandler,
@ -118,6 +119,25 @@ router.put('/:id', isAuthenticated, checkPermissions('filamentStock', 'edit'), a
editFilamentStockRouteHandler(req, res); editFilamentStockRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('filamentStock', '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
);
deleteFilamentStockByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFilamentStockRouteHandler(req, res); deleteFilamentStockRouteHandler(req, res);
}); });

View File

@ -39,6 +39,7 @@ import {
editMultipleOrderItemsRouteHandler, editMultipleOrderItemsRouteHandler,
newOrderItemRouteHandler, newOrderItemRouteHandler,
deleteOrderItemRouteHandler, deleteOrderItemRouteHandler,
deleteOrderItemByFilterRouteHandler,
listOrderItemsByPropertiesRouteHandler, listOrderItemsByPropertiesRouteHandler,
getOrderItemStatsRouteHandler, getOrderItemStatsRouteHandler,
getOrderItemHistoryRouteHandler, getOrderItemHistoryRouteHandler,
@ -139,6 +140,25 @@ router.put('/:id', isAuthenticated, checkPermissions('orderItem', 'edit'), async
editOrderItemRouteHandler(req, res); editOrderItemRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('orderItem', '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
);
deleteOrderItemByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteOrderItemRouteHandler(req, res); deleteOrderItemRouteHandler(req, res);
}); });

View File

@ -34,6 +34,7 @@ import {
editMultiplePartStocksRouteHandler, editMultiplePartStocksRouteHandler,
newPartStockRouteHandler, newPartStockRouteHandler,
deletePartStockRouteHandler, deletePartStockRouteHandler,
deletePartStockByFilterRouteHandler,
postPartStockRouteHandler, postPartStockRouteHandler,
listPartStocksByPropertiesRouteHandler, listPartStocksByPropertiesRouteHandler,
getPartStockStatsRouteHandler, getPartStockStatsRouteHandler,
@ -118,6 +119,25 @@ router.put('/:id', isAuthenticated, checkPermissions('partStock', 'edit'), async
editPartStockRouteHandler(req, res); editPartStockRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('partStock', '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
);
deletePartStockByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePartStockRouteHandler(req, res); deletePartStockRouteHandler(req, res);
}); });

View File

@ -35,6 +35,7 @@ import {
editMultipleProductStocksRouteHandler, editMultipleProductStocksRouteHandler,
newProductStockRouteHandler, newProductStockRouteHandler,
deleteProductStockRouteHandler, deleteProductStockRouteHandler,
deleteProductStockByFilterRouteHandler,
postProductStockRouteHandler, postProductStockRouteHandler,
listProductStocksByPropertiesRouteHandler, listProductStocksByPropertiesRouteHandler,
getProductStockStatsRouteHandler, getProductStockStatsRouteHandler,
@ -115,6 +116,25 @@ router.put('/:id', isAuthenticated, checkPermissions('productStock', 'edit'), as
editProductStockRouteHandler(req, res); editProductStockRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('productStock', '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
);
deleteProductStockByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteProductStockRouteHandler(req, res); deleteProductStockRouteHandler(req, res);
}); });

View File

@ -50,6 +50,7 @@ import {
editMultiplePurchaseOrdersRouteHandler, editMultiplePurchaseOrdersRouteHandler,
newPurchaseOrderRouteHandler, newPurchaseOrderRouteHandler,
deletePurchaseOrderRouteHandler, deletePurchaseOrderRouteHandler,
deletePurchaseOrderByFilterRouteHandler,
listPurchaseOrdersByPropertiesRouteHandler, listPurchaseOrdersByPropertiesRouteHandler,
getPurchaseOrderStatsRouteHandler, getPurchaseOrderStatsRouteHandler,
getPurchaseOrderHistoryRouteHandler, getPurchaseOrderHistoryRouteHandler,
@ -134,6 +135,25 @@ router.put('/:id', isAuthenticated, checkPermissions('purchaseOrder', 'edit'), a
editPurchaseOrderRouteHandler(req, res); editPurchaseOrderRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('purchaseOrder', '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
);
deletePurchaseOrderByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePurchaseOrderRouteHandler(req, res); deletePurchaseOrderRouteHandler(req, res);
}); });

View File

@ -41,6 +41,7 @@ import {
editMultipleShipmentsRouteHandler, editMultipleShipmentsRouteHandler,
newShipmentRouteHandler, newShipmentRouteHandler,
deleteShipmentRouteHandler, deleteShipmentRouteHandler,
deleteShipmentByFilterRouteHandler,
listShipmentsByPropertiesRouteHandler, listShipmentsByPropertiesRouteHandler,
getShipmentStatsRouteHandler, getShipmentStatsRouteHandler,
getShipmentHistoryRouteHandler, getShipmentHistoryRouteHandler,
@ -148,6 +149,25 @@ router.put('/:id', isAuthenticated, checkPermissions('shipment', 'edit'), async
editShipmentRouteHandler(req, res); editShipmentRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('shipment', '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
);
deleteShipmentByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteShipmentRouteHandler(req, res); deleteShipmentRouteHandler(req, res);
}); });

View File

@ -24,6 +24,7 @@ import {
newStockAuditRouteHandler, newStockAuditRouteHandler,
updateStockAuditRouteHandler, updateStockAuditRouteHandler,
deleteStockAuditRouteHandler, deleteStockAuditRouteHandler,
deleteStockAuditByFilterRouteHandler,
getStockAuditStatsRouteHandler, getStockAuditStatsRouteHandler,
getStockAuditHistoryRouteHandler, getStockAuditHistoryRouteHandler,
searchStockAuditsRouteHandler, searchStockAuditsRouteHandler,
@ -114,6 +115,25 @@ router.put('/:id', isAuthenticated, checkPermissions('stockAudit', 'edit'), asyn
updateStockAuditRouteHandler(req, res); updateStockAuditRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('stockAudit', '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
);
deleteStockAuditByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteStockAuditRouteHandler(req, res); deleteStockAuditRouteHandler(req, res);
}); });

View File

@ -15,6 +15,7 @@ import {
editMultipleStockLocationsRouteHandler, editMultipleStockLocationsRouteHandler,
newStockLocationRouteHandler, newStockLocationRouteHandler,
deleteStockLocationRouteHandler, deleteStockLocationRouteHandler,
deleteStockLocationByFilterRouteHandler,
listStockLocationsByPropertiesRouteHandler, listStockLocationsByPropertiesRouteHandler,
getStockLocationStatsRouteHandler, getStockLocationStatsRouteHandler,
getStockLocationHistoryRouteHandler, getStockLocationHistoryRouteHandler,
@ -82,6 +83,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getStockLocationNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getStockLocationNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('stockLocation', '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
);
deleteStockLocationByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, checkPermissions('stockLocation', 'info'), async (req, res) => { router.get('/:id', isAuthenticated, checkPermissions('stockLocation', 'info'), async (req, res) => {
getStockLocationRouteHandler(req, res); getStockLocationRouteHandler(req, res);
}); });

View File

@ -24,6 +24,7 @@ import {
editMultipleStockTransfersRouteHandler, editMultipleStockTransfersRouteHandler,
newStockTransferRouteHandler, newStockTransferRouteHandler,
deleteStockTransferRouteHandler, deleteStockTransferRouteHandler,
deleteStockTransferByFilterRouteHandler,
postStockTransferRouteHandler, postStockTransferRouteHandler,
listStockTransfersByPropertiesRouteHandler, listStockTransfersByPropertiesRouteHandler,
getStockTransferStatsRouteHandler, getStockTransferStatsRouteHandler,
@ -104,6 +105,25 @@ router.put('/:id', isAuthenticated, checkPermissions('stockTransfer', 'edit'), a
editStockTransferRouteHandler(req, res); editStockTransferRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('stockTransfer', '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
);
deleteStockTransferByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteStockTransferRouteHandler(req, res); deleteStockTransferRouteHandler(req, res);
}); });

View File

@ -23,6 +23,7 @@ import {
editAppPasswordRouteHandler, editAppPasswordRouteHandler,
newAppPasswordRouteHandler, newAppPasswordRouteHandler,
deleteAppPasswordRouteHandler, deleteAppPasswordRouteHandler,
deleteAppPasswordByFilterRouteHandler,
listAppPasswordsByPropertiesRouteHandler, listAppPasswordsByPropertiesRouteHandler,
getAppPasswordStatsRouteHandler, getAppPasswordStatsRouteHandler,
getAppPasswordHistoryRouteHandler, getAppPasswordHistoryRouteHandler,
@ -92,6 +93,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getAppPasswordNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getAppPasswordNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('appPassword', '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
);
deleteAppPasswordByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getAppPasswordRouteHandler(req, res); getAppPasswordRouteHandler(req, res);
}); });

View File

@ -24,6 +24,7 @@ import {
editCourierRouteHandler, editCourierRouteHandler,
newCourierRouteHandler, newCourierRouteHandler,
deleteCourierRouteHandler, deleteCourierRouteHandler,
deleteCourierByFilterRouteHandler,
listCouriersByPropertiesRouteHandler, listCouriersByPropertiesRouteHandler,
getCourierStatsRouteHandler, getCourierStatsRouteHandler,
getCourierHistoryRouteHandler, getCourierHistoryRouteHandler,
@ -102,6 +103,25 @@ router.put('/:id', isAuthenticated, checkPermissions('courier', 'edit'), async (
editCourierRouteHandler(req, res); editCourierRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('courier', '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
);
deleteCourierByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteCourierRouteHandler(req, res); deleteCourierRouteHandler(req, res);
}); });

View File

@ -55,6 +55,7 @@ import {
editCourierServiceRouteHandler, editCourierServiceRouteHandler,
newCourierServiceRouteHandler, newCourierServiceRouteHandler,
deleteCourierServiceRouteHandler, deleteCourierServiceRouteHandler,
deleteCourierServiceByFilterRouteHandler,
listCourierServicesByPropertiesRouteHandler, listCourierServicesByPropertiesRouteHandler,
getCourierServiceStatsRouteHandler, getCourierServiceStatsRouteHandler,
getCourierServiceHistoryRouteHandler, getCourierServiceHistoryRouteHandler,
@ -133,6 +134,25 @@ router.put('/:id', isAuthenticated, checkPermissions('courierService', 'edit'),
editCourierServiceRouteHandler(req, res); editCourierServiceRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('courierService', '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
);
deleteCourierServiceByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteCourierServiceRouteHandler(req, res); deleteCourierServiceRouteHandler(req, res);
}); });

View File

@ -32,6 +32,7 @@ import {
editDocumentPrinterRouteHandler, editDocumentPrinterRouteHandler,
newDocumentPrinterRouteHandler, newDocumentPrinterRouteHandler,
deleteDocumentPrinterRouteHandler, deleteDocumentPrinterRouteHandler,
deleteDocumentPrinterByFilterRouteHandler,
listDocumentPrintersByPropertiesRouteHandler, listDocumentPrintersByPropertiesRouteHandler,
getDocumentPrinterStatsRouteHandler, getDocumentPrinterStatsRouteHandler,
getDocumentPrinterHistoryRouteHandler, getDocumentPrinterHistoryRouteHandler,
@ -102,6 +103,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getDocumentPrinterNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getDocumentPrinterNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('documentPrinter', '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
);
deleteDocumentPrinterByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentPrinterRouteHandler(req, res); getDocumentPrinterRouteHandler(req, res);
}); });

View File

@ -38,6 +38,7 @@ import {
editDocumentSizeRouteHandler, editDocumentSizeRouteHandler,
newDocumentSizeRouteHandler, newDocumentSizeRouteHandler,
deleteDocumentSizeRouteHandler, deleteDocumentSizeRouteHandler,
deleteDocumentSizeByFilterRouteHandler,
listDocumentSizesByPropertiesRouteHandler, listDocumentSizesByPropertiesRouteHandler,
getDocumentSizeStatsRouteHandler, getDocumentSizeStatsRouteHandler,
getDocumentSizeHistoryRouteHandler, getDocumentSizeHistoryRouteHandler,
@ -108,6 +109,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getDocumentSizeNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getDocumentSizeNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('documentSize', '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
);
deleteDocumentSizeByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentSizeRouteHandler(req, res); getDocumentSizeRouteHandler(req, res);
}); });

View File

@ -38,6 +38,7 @@ import {
editDocumentTemplateRouteHandler, editDocumentTemplateRouteHandler,
newDocumentTemplateRouteHandler, newDocumentTemplateRouteHandler,
deleteDocumentTemplateRouteHandler, deleteDocumentTemplateRouteHandler,
deleteDocumentTemplateByFilterRouteHandler,
listDocumentTemplatesByPropertiesRouteHandler, listDocumentTemplatesByPropertiesRouteHandler,
getDocumentTemplateStatsRouteHandler, getDocumentTemplateStatsRouteHandler,
getDocumentTemplateHistoryRouteHandler, getDocumentTemplateHistoryRouteHandler,
@ -115,6 +116,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('documentTemplate', '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
);
deleteDocumentTemplateByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.post('/:id/intellisense', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => { router.post('/:id/intellisense', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
intellisenseDocumentTemplateRouteHandler(req, res); intellisenseDocumentTemplateRouteHandler(req, res);
}); });

View File

@ -3,6 +3,7 @@ import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js'; import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import { import {
deleteEmailAccountByFilterRouteHandler,
deleteEmailAccountRouteHandler, deleteEmailAccountRouteHandler,
editEmailAccountRouteHandler, editEmailAccountRouteHandler,
getEmailAccountRouteHandler, getEmailAccountRouteHandler,
@ -75,6 +76,24 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
); );
}); });
router.post('/', isAuthenticated, checkPermissions('emailAccount', 'new'), newEmailAccountRouteHandler); router.post('/', isAuthenticated, checkPermissions('emailAccount', 'new'), newEmailAccountRouteHandler);
router.delete(
'/delete',
isAuthenticated,
checkPermissions('emailAccount', 'delete'),
async (req, res) => {
const filter = await getFilter(
req.query.filter ? JSON.parse(req.query.filter) : {},
filters,
true
);
const masterFilter = await getFilter(
req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {},
filters,
true
);
deleteEmailAccountByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, getEmailAccountRouteHandler); router.get('/:id', isAuthenticated, getEmailAccountRouteHandler);
router.put('/:id', isAuthenticated, checkPermissions('emailAccount', 'edit'), editEmailAccountRouteHandler); router.put('/:id', isAuthenticated, checkPermissions('emailAccount', 'edit'), editEmailAccountRouteHandler);
router.delete('/:id', isAuthenticated, checkPermissions('emailAccount', 'delete'), deleteEmailAccountRouteHandler); router.delete('/:id', isAuthenticated, checkPermissions('emailAccount', 'delete'), deleteEmailAccountRouteHandler);

View File

@ -3,6 +3,7 @@ import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js'; import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import { import {
deleteEmailTemplateByFilterRouteHandler,
deleteEmailTemplateRouteHandler, deleteEmailTemplateRouteHandler,
editEmailTemplateRouteHandler, editEmailTemplateRouteHandler,
formatEmailTemplateRouteHandler, formatEmailTemplateRouteHandler,
@ -94,6 +95,24 @@ router.post('/', isAuthenticated, checkPermissions('emailTemplate', 'new'), newE
router.post('/format', isAuthenticated, checkPermissions('emailTemplate', 'design'), formatEmailTemplateRouteHandler); router.post('/format', isAuthenticated, checkPermissions('emailTemplate', 'design'), formatEmailTemplateRouteHandler);
router.post('/:id/intellisense', isAuthenticated, checkPermissions('emailTemplate', 'design'), intellisenseEmailTemplateRouteHandler); router.post('/:id/intellisense', isAuthenticated, checkPermissions('emailTemplate', 'design'), intellisenseEmailTemplateRouteHandler);
router.post('/:id/preview', isAuthenticated, checkPermissions('emailTemplate', 'design'), previewEmailTemplateRouteHandler); router.post('/:id/preview', isAuthenticated, checkPermissions('emailTemplate', 'design'), previewEmailTemplateRouteHandler);
router.delete(
'/delete',
isAuthenticated,
checkPermissions('emailTemplate', 'delete'),
async (req, res) => {
const filter = await getFilter(
req.query.filter ? JSON.parse(req.query.filter) : {},
filters,
true
);
const masterFilter = await getFilter(
req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {},
filters,
true
);
deleteEmailTemplateByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, getEmailTemplateRouteHandler); router.get('/:id', isAuthenticated, getEmailTemplateRouteHandler);
router.put('/:id', isAuthenticated, checkPermissions('emailTemplate', 'edit'), editEmailTemplateRouteHandler); router.put('/:id', isAuthenticated, checkPermissions('emailTemplate', 'edit'), editEmailTemplateRouteHandler);
router.delete('/:id', isAuthenticated, checkPermissions('emailTemplate', 'delete'), deleteEmailTemplateRouteHandler); router.delete('/:id', isAuthenticated, checkPermissions('emailTemplate', 'delete'), deleteEmailTemplateRouteHandler);

View File

@ -40,6 +40,7 @@ import {
editMultipleFilamentsRouteHandler, editMultipleFilamentsRouteHandler,
newFilamentRouteHandler, newFilamentRouteHandler,
deleteFilamentRouteHandler, deleteFilamentRouteHandler,
deleteFilamentByFilterRouteHandler,
getFilamentStatsRouteHandler, getFilamentStatsRouteHandler,
getFilamentHistoryRouteHandler, getFilamentHistoryRouteHandler,
searchFilamentsRouteHandler, searchFilamentsRouteHandler,
@ -134,6 +135,25 @@ router.put('/:id', isAuthenticated, checkPermissions('filament', 'edit'), async
editFilamentRouteHandler(req, res); editFilamentRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('filament', '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
);
deleteFilamentByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFilamentRouteHandler(req, res); deleteFilamentRouteHandler(req, res);
}); });

View File

@ -37,6 +37,7 @@ import {
editFilamentSkuRouteHandler, editFilamentSkuRouteHandler,
newFilamentSkuRouteHandler, newFilamentSkuRouteHandler,
deleteFilamentSkuRouteHandler, deleteFilamentSkuRouteHandler,
deleteFilamentSkuByFilterRouteHandler,
listFilamentSkusByPropertiesRouteHandler, listFilamentSkusByPropertiesRouteHandler,
getFilamentSkuStatsRouteHandler, getFilamentSkuStatsRouteHandler,
getFilamentSkuHistoryRouteHandler, getFilamentSkuHistoryRouteHandler,
@ -140,6 +141,25 @@ router.put('/:id', isAuthenticated, checkPermissions('filamentSku', 'edit'), asy
editFilamentSkuRouteHandler(req, res); editFilamentSkuRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('filamentSku', '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
);
deleteFilamentSkuByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFilamentSkuRouteHandler(req, res); deleteFilamentSkuRouteHandler(req, res);
}); });

View File

@ -26,6 +26,7 @@ import {
newFileRouteHandler, newFileRouteHandler,
flushFileRouteHandler, flushFileRouteHandler,
deleteFileRouteHandler, deleteFileRouteHandler,
deleteFileByFilterRouteHandler,
listFilesByPropertiesRouteHandler, listFilesByPropertiesRouteHandler,
getFileStatsRouteHandler, getFileStatsRouteHandler,
getFileHistoryRouteHandler, getFileHistoryRouteHandler,
@ -116,6 +117,25 @@ router.put('/:id', isAuthenticated, checkPermissions('file', 'edit'), async (req
editFileRouteHandler(req, res); editFileRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('file', '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
);
deleteFileByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFileRouteHandler(req, res); deleteFileRouteHandler(req, res);
}); });

View File

@ -23,6 +23,7 @@ import {
editHostRouteHandler, editHostRouteHandler,
newHostRouteHandler, newHostRouteHandler,
deleteHostRouteHandler, deleteHostRouteHandler,
deleteHostByFilterRouteHandler,
listHostsByPropertiesRouteHandler, listHostsByPropertiesRouteHandler,
getHostStatsRouteHandler, getHostStatsRouteHandler,
getHostHistoryRouteHandler, getHostHistoryRouteHandler,
@ -100,6 +101,25 @@ router.put('/:id', isAuthenticated, checkPermissions('host', 'edit'), async (req
editHostRouteHandler(req, res); editHostRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('host', '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
);
deleteHostByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteHostRouteHandler(req, res); deleteHostRouteHandler(req, res);
}); });

View File

@ -14,6 +14,8 @@ import {
getMaterialRouteHandler, getMaterialRouteHandler,
editMaterialRouteHandler, editMaterialRouteHandler,
newMaterialRouteHandler, newMaterialRouteHandler,
deleteMaterialRouteHandler,
deleteMaterialByFilterRouteHandler,
getMaterialStatsRouteHandler, getMaterialStatsRouteHandler,
getMaterialHistoryRouteHandler, getMaterialHistoryRouteHandler,
searchMaterialsRouteHandler, searchMaterialsRouteHandler,
@ -101,4 +103,27 @@ router.put('/:id', isAuthenticated, checkPermissions('material', 'edit'), async
editMaterialRouteHandler(req, res); editMaterialRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('material', '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
);
deleteMaterialByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, checkPermissions('material', 'delete'), async (req, res) => {
deleteMaterialRouteHandler(req, res);
});
export default router; export default router;

View File

@ -22,6 +22,7 @@ import {
editNoteTypeRouteHandler, editNoteTypeRouteHandler,
newNoteTypeRouteHandler, newNoteTypeRouteHandler,
deleteNoteTypeRouteHandler, deleteNoteTypeRouteHandler,
deleteNoteTypeByFilterRouteHandler,
listNoteTypesByPropertiesRouteHandler, listNoteTypesByPropertiesRouteHandler,
getNoteTypeStatsRouteHandler, getNoteTypeStatsRouteHandler,
getNoteTypeHistoryRouteHandler, getNoteTypeHistoryRouteHandler,
@ -92,6 +93,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getNoteTypeNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getNoteTypeNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('noteType', '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
);
deleteNoteTypeByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getNoteTypeRouteHandler(req, res); getNoteTypeRouteHandler(req, res);
}); });

View File

@ -37,6 +37,7 @@ import {
editPartRouteHandler, editPartRouteHandler,
newPartRouteHandler, newPartRouteHandler,
deletePartRouteHandler, deletePartRouteHandler,
deletePartByFilterRouteHandler,
listPartsByPropertiesRouteHandler, listPartsByPropertiesRouteHandler,
getPartStatsRouteHandler, getPartStatsRouteHandler,
getPartHistoryRouteHandler, getPartHistoryRouteHandler,
@ -116,6 +117,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
); );
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('part', '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
);
deletePartByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getPartRouteHandler(req, res); getPartRouteHandler(req, res);
}); });

View File

@ -43,6 +43,7 @@ import {
editPartSkuRouteHandler, editPartSkuRouteHandler,
newPartSkuRouteHandler, newPartSkuRouteHandler,
deletePartSkuRouteHandler, deletePartSkuRouteHandler,
deletePartSkuByFilterRouteHandler,
listPartSkusByPropertiesRouteHandler, listPartSkusByPropertiesRouteHandler,
getPartSkuStatsRouteHandler, getPartSkuStatsRouteHandler,
getPartSkuHistoryRouteHandler, getPartSkuHistoryRouteHandler,
@ -131,6 +132,25 @@ router.put('/:id', isAuthenticated, checkPermissions('partSku', 'edit'), async (
editPartSkuRouteHandler(req, res); editPartSkuRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('partSku', '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
);
deletePartSkuByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePartSkuRouteHandler(req, res); deletePartSkuRouteHandler(req, res);
}); });

View File

@ -14,6 +14,7 @@ import {
editPermissionSettingsRouteHandler, editPermissionSettingsRouteHandler,
newPermissionSettingsRouteHandler, newPermissionSettingsRouteHandler,
deletePermissionSettingsRouteHandler, deletePermissionSettingsRouteHandler,
deletePermissionSettingsByFilterRouteHandler,
listPermissionSettingsByPropertiesRouteHandler, listPermissionSettingsByPropertiesRouteHandler,
getPermissionSettingsStatsRouteHandler, getPermissionSettingsStatsRouteHandler,
getPermissionSettingsHistoryRouteHandler, getPermissionSettingsHistoryRouteHandler,
@ -148,6 +149,25 @@ router.put(
} }
); );
router.delete(
'/delete',
isAuthenticated,
checkPermissions('permissionSetting', '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
);
deletePermissionSettingsByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete( router.delete(
'/:id', '/:id',
isAuthenticated, isAuthenticated,

View File

@ -4,6 +4,7 @@ import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import { import {
deleteProductCategoryRouteHandler, deleteProductCategoryRouteHandler,
deleteProductCategoryByFilterRouteHandler,
editProductCategoryRouteHandler, editProductCategoryRouteHandler,
getProductCategoryHistoryRouteHandler, getProductCategoryHistoryRouteHandler,
getProductCategoryRouteHandler, getProductCategoryRouteHandler,
@ -96,6 +97,25 @@ router.put('/:id', isAuthenticated, checkPermissions('productCategory', 'edit'),
editProductCategoryRouteHandler(req, res); editProductCategoryRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('productCategory', '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
);
deleteProductCategoryByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteProductCategoryRouteHandler(req, res); deleteProductCategoryRouteHandler(req, res);
}); });

View File

@ -41,6 +41,7 @@ import {
editProductRouteHandler, editProductRouteHandler,
newProductRouteHandler, newProductRouteHandler,
deleteProductRouteHandler, deleteProductRouteHandler,
deleteProductByFilterRouteHandler,
listProductsByPropertiesRouteHandler, listProductsByPropertiesRouteHandler,
getProductStatsRouteHandler, getProductStatsRouteHandler,
getProductHistoryRouteHandler, getProductHistoryRouteHandler,
@ -111,6 +112,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getProductNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getProductNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('product', '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
);
deleteProductByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, async (req, res) => { router.get('/:id', isAuthenticated, async (req, res) => {
getProductRouteHandler(req, res); getProductRouteHandler(req, res);
}); });

View File

@ -43,6 +43,7 @@ import {
editProductSkuRouteHandler, editProductSkuRouteHandler,
newProductSkuRouteHandler, newProductSkuRouteHandler,
deleteProductSkuRouteHandler, deleteProductSkuRouteHandler,
deleteProductSkuByFilterRouteHandler,
listProductSkusByPropertiesRouteHandler, listProductSkusByPropertiesRouteHandler,
getProductSkuStatsRouteHandler, getProductSkuStatsRouteHandler,
getProductSkuHistoryRouteHandler, getProductSkuHistoryRouteHandler,
@ -136,6 +137,25 @@ router.put('/:id', isAuthenticated, checkPermissions('productSku', 'edit'), asyn
editProductSkuRouteHandler(req, res); editProductSkuRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('productSku', '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
);
deleteProductSkuByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteProductSkuRouteHandler(req, res); deleteProductSkuRouteHandler(req, res);
}); });

View File

@ -15,6 +15,7 @@ import {
editStockAuditLevelRouteHandler, editStockAuditLevelRouteHandler,
newStockAuditLevelRouteHandler, newStockAuditLevelRouteHandler,
deleteStockAuditLevelRouteHandler, deleteStockAuditLevelRouteHandler,
deleteStockAuditLevelByFilterRouteHandler,
listStockAuditLevelsByPropertiesRouteHandler, listStockAuditLevelsByPropertiesRouteHandler,
getStockAuditLevelStatsRouteHandler, getStockAuditLevelStatsRouteHandler,
getStockAuditLevelHistoryRouteHandler, getStockAuditLevelHistoryRouteHandler,
@ -124,6 +125,25 @@ router.put(
} }
); );
router.delete(
'/delete',
isAuthenticated,
checkPermissions('stockAuditLevel', '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
);
deleteStockAuditLevelByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteStockAuditLevelRouteHandler(req, res); deleteStockAuditLevelRouteHandler(req, res);
}); });

View File

@ -34,6 +34,7 @@ import {
editTaxRateRouteHandler, editTaxRateRouteHandler,
newTaxRateRouteHandler, newTaxRateRouteHandler,
deleteTaxRateRouteHandler, deleteTaxRateRouteHandler,
deleteTaxRateByFilterRouteHandler,
listTaxRatesByPropertiesRouteHandler, listTaxRatesByPropertiesRouteHandler,
getTaxRateStatsRouteHandler, getTaxRateStatsRouteHandler,
getTaxRateHistoryRouteHandler, getTaxRateHistoryRouteHandler,
@ -112,6 +113,25 @@ router.put('/:id', isAuthenticated, checkPermissions('taxRate', 'edit'), async (
editTaxRateRouteHandler(req, res); editTaxRateRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('taxRate', '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
);
deleteTaxRateByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteTaxRateRouteHandler(req, res); deleteTaxRateRouteHandler(req, res);
}); });

View File

@ -14,6 +14,7 @@ import {
editUserGroupRouteHandler, editUserGroupRouteHandler,
newUserGroupRouteHandler, newUserGroupRouteHandler,
deleteUserGroupRouteHandler, deleteUserGroupRouteHandler,
deleteUserGroupByFilterRouteHandler,
listUserGroupsByPropertiesRouteHandler, listUserGroupsByPropertiesRouteHandler,
getUserGroupStatsRouteHandler, getUserGroupStatsRouteHandler,
getUserGroupHistoryRouteHandler, getUserGroupHistoryRouteHandler,
@ -107,6 +108,25 @@ router.put('/:id', isAuthenticated, checkPermissions('userGroup', 'edit'), async
editUserGroupRouteHandler(req, res); editUserGroupRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('userGroup', '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
);
deleteUserGroupByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteUserGroupRouteHandler(req, res); deleteUserGroupRouteHandler(req, res);
}); });

View File

@ -22,6 +22,7 @@ import {
editVendorRouteHandler, editVendorRouteHandler,
newVendorRouteHandler, newVendorRouteHandler,
deleteVendorRouteHandler, deleteVendorRouteHandler,
deleteVendorByFilterRouteHandler,
listVendorsByPropertiesRouteHandler, listVendorsByPropertiesRouteHandler,
getVendorStatsRouteHandler, getVendorStatsRouteHandler,
getVendorHistoryRouteHandler, getVendorHistoryRouteHandler,
@ -100,6 +101,25 @@ router.put('/:id', isAuthenticated, checkPermissions('vendor', 'edit'), async (r
editVendorRouteHandler(req, res); editVendorRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('vendor', '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
);
deleteVendorByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteVendorRouteHandler(req, res); deleteVendorRouteHandler(req, res);
}); });

View File

@ -4,6 +4,7 @@ import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import { import {
deleteFilamentProfileRouteHandler, deleteFilamentProfileRouteHandler,
deleteFilamentProfileByFilterRouteHandler,
editFilamentProfileRouteHandler, editFilamentProfileRouteHandler,
getFilamentProfileRouteHandler, getFilamentProfileRouteHandler,
listFilamentProfilesByPropertiesRouteHandler, listFilamentProfilesByPropertiesRouteHandler,
@ -106,6 +107,25 @@ router.put(
} }
); );
router.delete(
'/delete',
isAuthenticated,
checkPermissions('filamentProfile', '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
);
deleteFilamentProfileByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFilamentProfileRouteHandler(req, res); deleteFilamentProfileRouteHandler(req, res);
}); });

View File

@ -28,7 +28,8 @@ import {
searchGCodeFilesRouteHandler, searchGCodeFilesRouteHandler,
getGCodeFilePropertyValuesRouteHandler, getGCodeFilePropertyValuesRouteHandler,
getGCodeFileNeighborsRouteHandler getGCodeFileNeighborsRouteHandler,
deleteGCodeFileByFilterRouteHandler
} from '../../services/production/gcodefiles.js'; } from '../../services/production/gcodefiles.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
@ -89,6 +90,25 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getGCodeFileNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id); getGCodeFileNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('gcodeFile', '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
);
deleteGCodeFileByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, checkPermissions('gcodeFile', 'info'), async (req, res) => { router.get('/:id', isAuthenticated, checkPermissions('gcodeFile', 'info'), async (req, res) => {
getGCodeFileRouteHandler(req, res); getGCodeFileRouteHandler(req, res);
}); });

View File

@ -32,6 +32,7 @@ import {
getJobRouteHandler, getJobRouteHandler,
newJobRouteHandler, newJobRouteHandler,
deleteJobRouteHandler, deleteJobRouteHandler,
deleteJobByFilterRouteHandler,
editJobRouteHandler, editJobRouteHandler,
getJobStatsRouteHandler, getJobStatsRouteHandler,
getJobHistoryRouteHandler, getJobHistoryRouteHandler,
@ -125,6 +126,25 @@ router.put('/:id', isAuthenticated, checkPermissions('job', 'edit'), async (req,
editJobRouteHandler(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) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteJobRouteHandler(req, res); deleteJobRouteHandler(req, res);
}); });

View File

@ -4,6 +4,7 @@ import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import { import {
deletePrinterProfileRouteHandler, deletePrinterProfileRouteHandler,
deletePrinterProfileByFilterRouteHandler,
editPrinterProfileRouteHandler, editPrinterProfileRouteHandler,
getPrinterProfileRouteHandler, getPrinterProfileRouteHandler,
listPrinterProfilesByPropertiesRouteHandler, listPrinterProfilesByPropertiesRouteHandler,
@ -86,6 +87,25 @@ router.put('/:id', isAuthenticated, checkPermissions('printerProfile', 'edit'),
editPrinterProfileRouteHandler(req, res); editPrinterProfileRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('printerProfile', '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
);
deletePrinterProfileByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deletePrinterProfileRouteHandler(req, res); deletePrinterProfileRouteHandler(req, res);
}); });

View File

@ -14,6 +14,7 @@ import {
searchPrintersRouteHandler, searchPrintersRouteHandler,
getPrinterPropertyValuesRouteHandler, getPrinterPropertyValuesRouteHandler,
getPrinterNeighborsRouteHandler, getPrinterNeighborsRouteHandler,
deletePrinterByFilterRouteHandler,
} from '../../services/production/printers.js'; } from '../../services/production/printers.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js'; import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
@ -93,6 +94,25 @@ router.get('/stats', isAuthenticated, async (req, res) => {
getPrinterStatsRouteHandler(req, res); getPrinterStatsRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('printer', '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
);
deletePrinterByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.get('/:id', isAuthenticated, checkPermissions('printer', 'info'), async (req, res) => { router.get('/:id', isAuthenticated, checkPermissions('printer', 'info'), async (req, res) => {
getPrinterRouteHandler(req, res); getPrinterRouteHandler(req, res);
}); });

View File

@ -31,6 +31,7 @@ import {
editClientRouteHandler, editClientRouteHandler,
newClientRouteHandler, newClientRouteHandler,
deleteClientRouteHandler, deleteClientRouteHandler,
deleteClientByFilterRouteHandler,
listClientsByPropertiesRouteHandler, listClientsByPropertiesRouteHandler,
getClientStatsRouteHandler, getClientStatsRouteHandler,
getClientHistoryRouteHandler, getClientHistoryRouteHandler,
@ -109,6 +110,25 @@ router.put('/:id', isAuthenticated, checkPermissions('client', 'edit'), async (r
editClientRouteHandler(req, res); editClientRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('client', '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
);
deleteClientByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteClientRouteHandler(req, res); deleteClientRouteHandler(req, res);
}); });

View File

@ -8,6 +8,7 @@ import {
editFulfillmentPolicyRouteHandler, editFulfillmentPolicyRouteHandler,
newFulfillmentPolicyRouteHandler, newFulfillmentPolicyRouteHandler,
deleteFulfillmentPolicyRouteHandler, deleteFulfillmentPolicyRouteHandler,
deleteFulfillmentPolicyByFilterRouteHandler,
listFulfillmentPoliciesByPropertiesRouteHandler, listFulfillmentPoliciesByPropertiesRouteHandler,
getFulfillmentPolicyStatsRouteHandler, getFulfillmentPolicyStatsRouteHandler,
getFulfillmentPolicyHistoryRouteHandler, getFulfillmentPolicyHistoryRouteHandler,
@ -139,6 +140,25 @@ router.put(
} }
); );
router.delete(
'/delete',
isAuthenticated,
checkPermissions('fulfillmentPolicy', '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
);
deleteFulfillmentPolicyByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFulfillmentPolicyRouteHandler(req, res); deleteFulfillmentPolicyRouteHandler(req, res);
}); });

View File

@ -59,6 +59,7 @@ import {
editListingRouteHandler, editListingRouteHandler,
newListingRouteHandler, newListingRouteHandler,
deleteListingRouteHandler, deleteListingRouteHandler,
deleteListingByFilterRouteHandler,
listListingsByPropertiesRouteHandler, listListingsByPropertiesRouteHandler,
getListingStatsRouteHandler, getListingStatsRouteHandler,
getListingHistoryRouteHandler, getListingHistoryRouteHandler,
@ -167,6 +168,25 @@ router.put('/:id', isAuthenticated, checkPermissions('listing', 'edit'), async (
editListingRouteHandler(req, res); editListingRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('listing', '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
);
deleteListingByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteListingRouteHandler(req, res); deleteListingRouteHandler(req, res);
}); });

View File

@ -46,6 +46,7 @@ import {
editListingVarientRouteHandler, editListingVarientRouteHandler,
newListingVarientRouteHandler, newListingVarientRouteHandler,
deleteListingVarientRouteHandler, deleteListingVarientRouteHandler,
deleteListingVarientByFilterRouteHandler,
listListingVarientsByPropertiesRouteHandler, listListingVarientsByPropertiesRouteHandler,
getListingVarientStatsRouteHandler, getListingVarientStatsRouteHandler,
getListingVarientHistoryRouteHandler, getListingVarientHistoryRouteHandler,
@ -184,6 +185,27 @@ router.put(
} }
); );
router.delete(
'/delete',
isAuthenticated,
checkPermissions('listingVarient', 'delete'),
async (req, res) => {
const filter = await getFilter(
req.query.filter ? JSON.parse(req.query.filter) : {},
listAllowedFilters,
true,
listingVarientModel
);
const masterFilter = await getFilter(
req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {},
listAllowedFilters,
true,
listingVarientModel
);
deleteListingVarientByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteListingVarientRouteHandler(req, res); deleteListingVarientRouteHandler(req, res);
}); });

View File

@ -41,6 +41,7 @@ import {
editMarketplaceRouteHandler, editMarketplaceRouteHandler,
newMarketplaceRouteHandler, newMarketplaceRouteHandler,
deleteMarketplaceRouteHandler, deleteMarketplaceRouteHandler,
deleteMarketplaceByFilterRouteHandler,
listMarketplacesByPropertiesRouteHandler, listMarketplacesByPropertiesRouteHandler,
getMarketplaceStatsRouteHandler, getMarketplaceStatsRouteHandler,
getMarketplaceHistoryRouteHandler, getMarketplaceHistoryRouteHandler,
@ -295,6 +296,25 @@ router.put('/:id', isAuthenticated, checkPermissions('marketplace', 'edit'), asy
editMarketplaceRouteHandler(req, res); editMarketplaceRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('marketplace', '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
);
deleteMarketplaceByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteMarketplaceRouteHandler(req, res); deleteMarketplaceRouteHandler(req, res);
}); });

View File

@ -8,6 +8,7 @@ import {
editReturnPolicyRouteHandler, editReturnPolicyRouteHandler,
newReturnPolicyRouteHandler, newReturnPolicyRouteHandler,
deleteReturnPolicyRouteHandler, deleteReturnPolicyRouteHandler,
deleteReturnPolicyByFilterRouteHandler,
listReturnPoliciesByPropertiesRouteHandler, listReturnPoliciesByPropertiesRouteHandler,
getReturnPolicyStatsRouteHandler, getReturnPolicyStatsRouteHandler,
getReturnPolicyHistoryRouteHandler, getReturnPolicyHistoryRouteHandler,
@ -137,6 +138,25 @@ router.put('/:id', isAuthenticated, checkPermissions('returnPolicy', 'edit'), as
editReturnPolicyRouteHandler(req, res); editReturnPolicyRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('returnPolicy', '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
);
deleteReturnPolicyByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteReturnPolicyRouteHandler(req, res); deleteReturnPolicyRouteHandler(req, res);
}); });

View File

@ -23,6 +23,7 @@ import {
editMultipleSalesOrdersRouteHandler, editMultipleSalesOrdersRouteHandler,
newSalesOrderRouteHandler, newSalesOrderRouteHandler,
deleteSalesOrderRouteHandler, deleteSalesOrderRouteHandler,
deleteSalesOrderByFilterRouteHandler,
listSalesOrdersByPropertiesRouteHandler, listSalesOrdersByPropertiesRouteHandler,
getSalesOrderStatsRouteHandler, getSalesOrderStatsRouteHandler,
getSalesOrderHistoryRouteHandler, getSalesOrderHistoryRouteHandler,
@ -107,6 +108,25 @@ router.put('/:id', isAuthenticated, checkPermissions('salesOrder', 'edit'), asyn
editSalesOrderRouteHandler(req, res); editSalesOrderRouteHandler(req, res);
}); });
router.delete(
'/delete',
isAuthenticated,
checkPermissions('salesOrder', '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
);
deleteSalesOrderByFilterRouteHandler(req, res, filter, masterFilter);
}
);
router.delete('/:id', isAuthenticated, async (req, res) => { router.delete('/:id', isAuthenticated, async (req, res) => {
deleteSalesOrderRouteHandler(req, res); deleteSalesOrderRouteHandler(req, res);
}); });

View File

@ -10,6 +10,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -322,6 +323,26 @@ export const newInvoiceRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteInvoiceByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: invoiceModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered Invoice:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteInvoiceRouteHandler = async (req, res) => { export const deleteInvoiceRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -171,6 +172,26 @@ export const newPaymentPolicyRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deletePaymentPolicyByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: paymentPolicyModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered PaymentPolicy:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deletePaymentPolicyRouteHandler = async (req, res) => { export const deletePaymentPolicyRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);
const result = await deleteObject({ const result = await deleteObject({

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -240,6 +241,26 @@ export const newPaymentRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deletePaymentByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: paymentModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered Payment:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deletePaymentRouteHandler = async (req, res) => { export const deletePaymentRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -170,6 +171,26 @@ export const newTaxRecordRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteTaxRecordByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: taxRecordModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered TaxRecord:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteTaxRecordRouteHandler = async (req, res) => { export const deleteTaxRecordRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -10,6 +10,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -229,6 +230,27 @@ export const newFilamentStockRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteFilamentStockByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: filamentStockModel,
filter: { ...masterFilter, ...filter },
user: req.user,
states: ['draft'],
});
if (result.error) {
logger.error('Failed to delete filtered FilamentStock:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteFilamentStockRouteHandler = async (req, res) => { export const deleteFilamentStockRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -5,6 +5,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -380,6 +381,26 @@ export const newOrderItemRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteOrderItemByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: orderItemModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered OrderItem:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteOrderItemRouteHandler = async (req, res) => { export const deleteOrderItemRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -218,6 +219,27 @@ export const newPartStockRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deletePartStockByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: partStockModel,
filter: { ...masterFilter, ...filter },
user: req.user,
states: ['draft'],
});
if (result.error) {
logger.error('Failed to delete filtered PartStock:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deletePartStockRouteHandler = async (req, res) => { export const deletePartStockRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -290,6 +291,27 @@ export const newProductStockRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteProductStockByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: productStockModel,
filter: { ...masterFilter, ...filter },
user: req.user,
states: ['draft'],
});
if (result.error) {
logger.error('Failed to delete filtered ProductStock:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteProductStockRouteHandler = async (req, res) => { export const deleteProductStockRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -213,6 +214,26 @@ export const newPurchaseOrderRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deletePurchaseOrderByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: purchaseOrderModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered PurchaseOrder:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deletePurchaseOrderRouteHandler = async (req, res) => { export const deletePurchaseOrderRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -219,6 +220,26 @@ export const newShipmentRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteShipmentByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: shipmentModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered Shipment:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteShipmentRouteHandler = async (req, res) => { export const deleteShipmentRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -11,6 +11,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -445,6 +446,27 @@ export const newStockAuditRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteStockAuditByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: stockAuditModel,
filter: { ...masterFilter, ...filter },
user: req.user,
states: ['draft'],
});
if (result.error) {
logger.error('Failed to delete filtered StockAudit:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteStockAuditRouteHandler = async (req, res) => { export const deleteStockAuditRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -182,6 +183,26 @@ export const newStockLocationRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteStockLocationByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: stockLocationModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered StockLocation:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteStockLocationRouteHandler = async (req, res) => { export const deleteStockLocationRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -9,6 +9,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -432,6 +433,27 @@ export const newStockTransferRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteStockTransferByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: stockTransferModel,
filter: { ...masterFilter, ...filter },
user: req.user,
states: ['draft'],
});
if (result.error) {
logger.error('Failed to delete filtered StockTransfer:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteStockTransferRouteHandler = async (req, res) => { export const deleteStockTransferRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -6,6 +6,7 @@ jest.unstable_mockModule('../../../database/schemas/management/emailaccount.sche
})); }));
jest.unstable_mockModule('../../../database/database.js', () => ({ jest.unstable_mockModule('../../../database/database.js', () => ({
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
editObject: jest.fn(), editObject: jest.fn(),
getObject: jest.fn(), getObject: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -5,6 +5,7 @@ jest.unstable_mockModule('../../../database/schemas/management/emailtemplate.sch
})); }));
jest.unstable_mockModule('../../../database/database.js', () => ({ jest.unstable_mockModule('../../../database/database.js', () => ({
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
editObject: jest.fn(), editObject: jest.fn(),
getObject: jest.fn(), getObject: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -9,6 +9,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObjects: jest.fn(), editObjects: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
flushFile: jest.fn(), flushFile: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,8 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
getObject: jest.fn(), getObject: jest.fn(),
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(),
deleteObjects: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),
getObjectNeighbors: jest.fn(), getObjectNeighbors: jest.fn(),
@ -33,9 +35,13 @@ const {
listMaterialsRouteHandler, listMaterialsRouteHandler,
getMaterialRouteHandler, getMaterialRouteHandler,
newMaterialRouteHandler, newMaterialRouteHandler,
deleteMaterialRouteHandler,
deleteMaterialByFilterRouteHandler,
} = await import('../materials.js'); } = await import('../materials.js');
const { listObjects, getObject, newObject } = await import('../../../database/database.js'); const { listObjects, getObject, deleteObject, deleteObjects } = await import(
'../../../database/database.js'
);
const { materialModel } = await import('../../../database/schemas/management/material.schema.js'); const { materialModel } = await import('../../../database/schemas/management/material.schema.js');
describe('Material Service Route Handlers', () => { describe('Material Service Route Handlers', () => {
@ -79,5 +85,49 @@ describe('Material Service Route Handlers', () => {
expect(res.send).toHaveBeenCalledWith(mockMaterial); expect(res.send).toHaveBeenCalledWith(mockMaterial);
}); });
}); });
describe('deleteMaterialRouteHandler', () => {
it('should delete a material by ID', async () => {
req.params.id = '507f1f77bcf86cd799439011';
const deletedMaterial = { _id: req.params.id, name: 'PLA' };
deleteObject.mockResolvedValue(deletedMaterial);
await deleteMaterialRouteHandler(req, res);
expect(deleteObject).toHaveBeenCalledWith(
expect.objectContaining({
model: materialModel,
user: req.user,
})
);
expect(res.send).toHaveBeenCalledWith(deletedMaterial);
});
});
describe('deleteMaterialByFilterRouteHandler', () => {
it('should delete materials matching the merged filters', async () => {
const result = {
matchedCount: 2,
deletedCount: 2,
failedCount: 0,
errors: [],
};
deleteObjects.mockResolvedValue(result);
await deleteMaterialByFilterRouteHandler(
req,
res,
{ name: 'PLA' },
{ tags: 'stock' }
);
expect(deleteObjects).toHaveBeenCalledWith({
model: materialModel,
filter: { tags: 'stock', name: 'PLA' },
user: req.user,
});
expect(res.send).toHaveBeenCalledWith(result);
});
});
}); });

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -8,6 +8,7 @@ jest.unstable_mockModule('../../../database/database.js', () => ({
editObject: jest.fn(), editObject: jest.fn(),
newObject: jest.fn(), newObject: jest.fn(),
deleteObject: jest.fn(), deleteObject: jest.fn(),
deleteObjects: jest.fn(),
listObjectsByProperties: jest.fn(), listObjectsByProperties: jest.fn(),
getModelStats: jest.fn(), getModelStats: jest.fn(),
getModelHistory: jest.fn(), getModelHistory: jest.fn(),

View File

@ -11,6 +11,7 @@ import {
editObject, editObject,
newObject, newObject,
deleteObject, deleteObject,
deleteObjects,
getModelStats, getModelStats,
getModelHistory, getModelHistory,
searchObjects, searchObjects,
@ -178,6 +179,26 @@ export const newAppPasswordRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteAppPasswordByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: appPasswordModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered AppPassword:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteAppPasswordRouteHandler = async (req, res) => { export const deleteAppPasswordRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -171,6 +172,26 @@ export const newCourierRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteCourierByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: courierModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered Courier:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteCourierRouteHandler = async (req, res) => { export const deleteCourierRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -193,6 +194,26 @@ export const newCourierServiceRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteCourierServiceByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: courierServiceModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered CourierService:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteCourierServiceRouteHandler = async (req, res) => { export const deleteCourierServiceRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -182,6 +183,26 @@ export const newDocumentPrinterRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteDocumentPrinterByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: documentPrinterModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered DocumentPrinter:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteDocumentPrinterRouteHandler = async (req, res) => { export const deleteDocumentPrinterRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -176,6 +177,26 @@ export const newDocumentSizeRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteDocumentSizeByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: documentSizeModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered DocumentSize:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteDocumentSizeRouteHandler = async (req, res) => { export const deleteDocumentSizeRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -4,6 +4,7 @@ import log4js from 'log4js';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import { import {
deleteObject, deleteObject,
deleteObjects,
listObjects, listObjects,
getObject, getObject,
editObject, editObject,
@ -239,6 +240,26 @@ export const newDocumentTemplateRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteDocumentTemplateByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: documentTemplateModel,
filter: { ...masterFilter, ...filter },
user: req.user,
});
if (result.error) {
logger.error('Failed to delete filtered DocumentTemplate:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteDocumentTemplateRouteHandler = async (req, res) => { export const deleteDocumentTemplateRouteHandler = async (req, res) => {
// Get ID from params // Get ID from params
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -9,6 +9,7 @@ import {
editObject, editObject,
newObject, newObject,
deleteObject, deleteObject,
deleteObjects,
getModelStats, getModelStats,
getModelHistory, getModelHistory,
searchObjects, searchObjects,
@ -182,6 +183,27 @@ export const newEmailAccountRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteEmailAccountByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: emailAccountModel,
filter: { ...masterFilter, ...filter },
user: req.user,
checkUnused: true,
});
if (result.error) {
logger.error('Failed to delete filtered EmailAccount:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteEmailAccountRouteHandler = async (req, res) => { export const deleteEmailAccountRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -9,6 +9,7 @@ import {
editObject, editObject,
newObject, newObject,
deleteObject, deleteObject,
deleteObjects,
getModelStats, getModelStats,
getModelHistory, getModelHistory,
searchObjects, searchObjects,
@ -222,6 +223,27 @@ export const newEmailTemplateRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteEmailTemplateByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: emailTemplateModel,
filter: { ...masterFilter, ...filter },
user: req.user,
checkUnused: true,
});
if (result.error) {
logger.error('Failed to delete filtered EmailTemplate:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteEmailTemplateRouteHandler = async (req, res) => { export const deleteEmailTemplateRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

View File

@ -10,6 +10,7 @@ import {
editObjects, editObjects,
newObject, newObject,
deleteObject, deleteObject,
deleteObjects,
getModelStats, getModelStats,
getModelHistory, getModelHistory,
searchObjects, searchObjects,
@ -227,6 +228,27 @@ export const newFilamentRouteHandler = async (req, res) => {
res.send(result); res.send(result);
}; };
export const deleteFilamentByFilterRouteHandler = async (
req,
res,
filter = {},
masterFilter = {}
) => {
const result = await deleteObjects({
model: filamentModel,
filter: { ...masterFilter, ...filter },
user: req.user,
checkUnused: true,
});
if (result.error) {
logger.error('Failed to delete filtered Filament:', result.error);
return res.status(result.code || 500).send(result);
}
res.send(result);
};
export const deleteFilamentRouteHandler = async (req, res) => { export const deleteFilamentRouteHandler = async (req, res) => {
const id = new mongoose.Types.ObjectId(req.params.id); const id = new mongoose.Types.ObjectId(req.params.id);

Some files were not shown because too many files have changed in this diff Show More