"use strict"; /** * Single archive — soft delete one record */ async function archiveOne(Model, where, deletedBy, transaction) { const record = await Model.findOne({ where }); if (!record) return null; await record.update({ deletedBy: deletedBy ?? null }, { transaction }); await record.destroy({ transaction }); return record; } /** * Bulk archive — soft delete multiple records by primary key */ async function archiveMany(Model, pkField, ids, deletedBy, transaction) { if (!ids?.length) return 0; const records = await Model.findAll({ where: { [pkField]: ids, deletedAt: null } }); if (!records.length) return 0; for (const record of records) { await record.update({ deletedBy: deletedBy ?? null }, { transaction }); await record.destroy({ transaction }); } return records.length; } module.exports = { archiveOne, archiveMany };