60 lines
2.6 KiB
JavaScript
60 lines
2.6 KiB
JavaScript
import { clearCacheByTableName } from '../helpers/functions.cache.js';
|
|
import { acquireConnection } from './pool.js';
|
|
const recordIdColumns = new Map();
|
|
recordIdColumns.set('FeeCategories', 'feeCategoryId');
|
|
recordIdColumns.set('Fees', 'feeId');
|
|
recordIdColumns.set('BurialSites', 'burialSiteId');
|
|
recordIdColumns.set('BurialSiteComments', 'burialSiteCommentId');
|
|
recordIdColumns.set('Contracts', 'contractId');
|
|
recordIdColumns.set('ContractComments', 'contractCommentId');
|
|
recordIdColumns.set('BurialSiteStatuses', 'burialSiteStatusId');
|
|
recordIdColumns.set('BurialSiteTypes', 'burialSiteTypeId');
|
|
recordIdColumns.set('BurialSiteTypeFields', 'burialSiteFieldTypeId');
|
|
recordIdColumns.set('Cemeteries', 'cemeteryId');
|
|
recordIdColumns.set('ContractTypes', 'contractTypeId');
|
|
recordIdColumns.set('ContractTypeFields', 'contractTypeFieldId');
|
|
recordIdColumns.set('WorkOrders', 'workOrderId');
|
|
recordIdColumns.set('WorkOrderComments', 'workOrderCommentId');
|
|
recordIdColumns.set('WorkOrderMilestones', 'workOrderMilestoneId');
|
|
recordIdColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneTypeId');
|
|
recordIdColumns.set('WorkOrderTypes', 'workOrderTypeId');
|
|
const relatedTables = new Map();
|
|
relatedTables.set('FeeCategories', ['Fees']);
|
|
relatedTables.set('BurialSites', ['BurialSiteFields', 'BurialSiteComments']);
|
|
relatedTables.set('Contracts', [
|
|
'ContractFields',
|
|
'ContractComments'
|
|
]);
|
|
relatedTables.set('BurialSiteTypes', ['BurialSiteTypeFields']);
|
|
relatedTables.set('Cemeteries', ['BurialSites']);
|
|
relatedTables.set('ContractTypes', ['ContractTypePrints', 'ContractTypeFields']);
|
|
relatedTables.set('WorkOrders', [
|
|
'WorkOrderMilestones',
|
|
'WorkOrderLots',
|
|
'WorkOrderContracts',
|
|
'WorkOrderComments'
|
|
]);
|
|
export async function deleteRecord(recordTable, recordId, user) {
|
|
const database = await acquireConnection();
|
|
const rightNowMillis = Date.now();
|
|
const result = database
|
|
.prepare(`update ${recordTable}
|
|
set recordDelete_userName = ?,
|
|
recordDelete_timeMillis = ?
|
|
where ${recordIdColumns.get(recordTable)} = ?
|
|
and recordDelete_timeMillis is null`)
|
|
.run(user.userName, rightNowMillis, recordId);
|
|
for (const relatedTable of relatedTables.get(recordTable) ?? []) {
|
|
database
|
|
.prepare(`update ${relatedTable}
|
|
set recordDelete_userName = ?,
|
|
recordDelete_timeMillis = ?
|
|
where ${recordIdColumns.get(recordTable)} = ?
|
|
and recordDelete_timeMillis is null`)
|
|
.run(user.userName, rightNowMillis, recordId);
|
|
}
|
|
database.release();
|
|
clearCacheByTableName(recordTable);
|
|
return result.changes > 0;
|
|
}
|