- 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.
21 lines
903 B
TypeScript
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 }
|
|
);
|
|
});
|
|
}
|