metis-desk/modules/assets/src/api/infrastructure/persistence/remove-shared-workstation-assets.ts
David b45925f3e2 feat(assets): implement asset picker dialog and selection components
- Added `useAssetPickerController` for managing asset selection logic.
- Created `AssetSelectProps` type for defining asset selection properties.
- Implemented `AssetPickerDialog` for displaying the asset selection interface.
- Developed `AssetPickerList` for rendering the list of selectable assets.
- Introduced `AssetSelect` component for integrating the asset picker into forms.
- Created `AssetList` component for shared asset listing functionality.
- Added tests for workstation creation logic to ensure proper validation.
- Implemented workstation asset fields and association fields for managing workstation assets.
- Developed workstation lifecycle dialog for managing work profile states.
- Added form progress component for visualizing multi-step forms.
2026-10-14 19:42:59 +02:00

21 lines
903 B
TypeScript

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 }
);
});
}