From 60b5d71309436d39658f7b4ece965d60e33f82fe Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Fri, 14 Mar 2025 14:36:52 +0100 Subject: [PATCH] feat: Add status flag to get flows filters --- packages/backend/src/models/user.js | 8 +++++++- packages/backend/src/models/user.test.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/models/user.js b/packages/backend/src/models/user.js index 98af0fc3..1e8b51a7 100644 --- a/packages/backend/src/models/user.js +++ b/packages/backend/src/models/user.js @@ -531,7 +531,7 @@ class User extends Base { return folders.map((folder) => folder.id); } - getFlows({ folderId, name }, ownedFolderIds) { + getFlows({ folderId, name, status }, ownedFolderIds) { return this.authorizedFlows .clone() .withGraphFetched({ @@ -542,6 +542,12 @@ class User extends Base { builder.where('flows.name', 'ilike', `%${name}%`); } + if (status === 'published') { + builder.where('flows.active', true); + } else if (status === 'draft') { + builder.where('flows.active', false); + } + if (folderId === 'null') { builder .whereNull('flows.folder_id') diff --git a/packages/backend/src/models/user.test.js b/packages/backend/src/models/user.test.js index 0d4ffb47..86a27e04 100644 --- a/packages/backend/src/models/user.test.js +++ b/packages/backend/src/models/user.test.js @@ -1202,11 +1202,13 @@ describe('User model', () => { flowOne = await createFlow({ userId: currentUser.id, folderId: folder.id, + active: true, name: 'Flow One', }); flowTwo = await createFlow({ userId: currentUser.id, + active: false, name: 'Flow Two', }); @@ -1237,6 +1239,25 @@ describe('User model', () => { expect(flows[0].id).toBe(flowTwo.id); }); + it('should return flows filtered by status', async () => { + const flows = await currentUser.getFlows({ status: 'published' }, [ + folder.id, + ]); + + expect(flows).toHaveLength(1); + expect(flows[0].id).toBe(flowOne.id); + }); + + it('should return flows filtered by name and status', async () => { + const flows = await currentUser.getFlows( + { name: 'Flow One', status: 'published' }, + [folder.id] + ); + + expect(flows).toHaveLength(1); + expect(flows[0].id).toBe(flowOne.id); + }); + it('should return flows with specific folder ID', async () => { const flows = await currentUser.getFlows({ folderId: folder.id }, [ folder.id,