mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
chore: relocate backend into apps/api ahead of monorepo merge
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"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 };
|
||||
Reference in New Issue
Block a user