diff --git a/packages/backend/src/models/folder.js b/packages/backend/src/models/folder.js index c45f8de4..de477f32 100644 --- a/packages/backend/src/models/folder.js +++ b/packages/backend/src/models/folder.js @@ -38,7 +38,10 @@ class Folder extends Base { }); async delete() { - await this.$relatedQuery('flows').patch({ folderId: null }); + await this.$relatedQuery('flows') + .withSoftDeleted() + .patch({ folderId: null }); + await this.$query().delete(); } } diff --git a/packages/backend/src/models/folder.test.js b/packages/backend/src/models/folder.test.js index ca983f78..417b4435 100644 --- a/packages/backend/src/models/folder.test.js +++ b/packages/backend/src/models/folder.test.js @@ -54,6 +54,20 @@ describe('Folder model', () => { expect(refetchedFlow.folderId).toBe(null); }); + it('should set folderId to null for all related soft-deleted flows before deleting the folder', async () => { + const user = await createUser(); + + const folder = await createFolder({ userId: user.id }); + const flow = await createFlow({ folderId: folder.id, userId: user.id }); + + await flow.$query().delete(); + + await folder.delete(); + + const refetchedFlow = await flow.$query().withSoftDeleted(); + expect(refetchedFlow.folderId).toBe(null); + }); + it('should delete the folder', async () => { const user = await createUser(); const folder = await createFolder({ userId: user.id });