65 lines
2.6 KiB
JavaScript
65 lines
2.6 KiB
JavaScript
import { clearCacheByTableName } from '../functions.cache.js';
|
|
import { acquireConnection } from './pool.js';
|
|
const recordIdColumns = new Map();
|
|
recordIdColumns.set('FeeCategories', 'feeCategoryId');
|
|
recordIdColumns.set('Fees', 'feeId');
|
|
recordIdColumns.set('Lots', 'lotId');
|
|
recordIdColumns.set('LotComments', 'lotCommentId');
|
|
recordIdColumns.set('LotOccupancies', 'lotOccupancyId');
|
|
recordIdColumns.set('LotOccupancyComments', 'lotOccupancyCommentId');
|
|
recordIdColumns.set('LotOccupantTypes', 'lotOccupantTypeId');
|
|
recordIdColumns.set('LotStatuses', 'lotStatusId');
|
|
recordIdColumns.set('LotTypes', 'lotTypeId');
|
|
recordIdColumns.set('LotTypeFields', 'lotTypeId');
|
|
recordIdColumns.set('Maps', 'mapId');
|
|
recordIdColumns.set('OccupancyTypes', 'occupancyTypeId');
|
|
recordIdColumns.set('OccupancyTypeFields', 'occupancyTypeFieldId');
|
|
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('Lots', ['LotFields', 'LotComments']);
|
|
relatedTables.set('LotOccupancies', [
|
|
'LotOccupancyOccupants',
|
|
'LotOccupancyFields',
|
|
'LotOccupancyComments'
|
|
]);
|
|
relatedTables.set('LotTypes', ['LotTypeFields']);
|
|
relatedTables.set('Maps', ['Lots']);
|
|
relatedTables.set('OccupancyTypes', [
|
|
'OccupancyTypePrints',
|
|
'OccupancyTypeFields'
|
|
]);
|
|
relatedTables.set('WorkOrders', [
|
|
'WorkOrderMilestones',
|
|
'WorkOrderLots',
|
|
'WorkOrderLotOccupancies',
|
|
'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;
|
|
}
|