Prisma - Use Referential actions
Created by: deepakduggirala
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions
To delete a dataset, all the associated relations have to be deleted first, this can be specified in schema.prisma
config.
async function hard_delete(id) {
const deleteFiles = prisma.dataset_file.deleteMany({
where: {
dataset_id: id,
},
});
const deleteWorkflows = prisma.workflow.deleteMany({
where: {
dataset_id: id,
},
});
const deleteAudit = prisma.dataset_audit.deleteMany({
where: {
dataset_id: id,
},
});
const deleteStates = prisma.dataset_state.deleteMany({
where: {
dataset_id: id,
},
});
const deleteAssociations = prisma.dataset_hierarchy.deleteMany({
where: {
OR: [
{
source_id: id,
},
{
derived_id: id,
},
],
},
});
const deleteDataset = prisma.dataset.delete({
where: {
id,
},
});
await prisma.$transaction([
deleteFiles,
deleteWorkflows,
deleteAudit,
deleteStates,
deleteAssociations,
deleteDataset,
]);
}