metis-desk/modules/assets/src/api/infrastructure/persistence/remove-shared-workstation-assets.ts

21 lines
903 B
TypeScript
Raw Normal View History

import type { Sequelize } from "sequelize";
/** Retira el vínculo compartido de instantáneas y proyecciones, sin borrar activos ni revisiones. */
export async function removeSharedWorkstationAssets(database: Sequelize) {
await database.transaction(async (transaction) => {
await database.query("DELETE FROM workstation_members WHERE kind='shared'", { transaction });
await database.query("DELETE FROM workstation_revision_members WHERE kind='shared'", {
transaction,
});
await database.query(
`DELETE reference FROM workstation_assets AS reference
WHERE NOT EXISTS (
SELECT 1 FROM workstation_revision_members AS member
INNER JOIN workstation_revisions AS revision ON revision.id=member.revisionId
WHERE revision.workstationId=reference.workstationId AND member.assetId=reference.assetId
)`,
{ transaction }
);
});
}