mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
31 lines
888 B
JavaScript
31 lines
888 B
JavaScript
"use strict";
|
|
|
|
/**
|
|
* Single archive — soft delete one record
|
|
*/
|
|
async function archiveOne(Model, where, deletedBy, transaction) {
|
|
const record = await Model.findOne({ where, transaction });
|
|
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 }; |