refactor: Consolidate WorkflowService.getMany() (no-changelog) (#6892)

In scope:

- Consolidate `WorkflowService.getMany()`.
- Support non-entity field `ownedBy` for `select`.
- Support `tags` for `filter`.
- Move `addOwnerId` to `OwnershipService`.
- Remove unneeded check for `filter.id`.
- Simplify DTO validation for `filter` and `select`.
- Expand tests for `GET /workflows`.

Workflow list query DTOs:

```
filter → name, active, tags
select → id, name, active, tags, createdAt, updatedAt, versionId, ownedBy
```

Out of scope:

- Migrate `shared_workflow.roleId` and `shared_credential.roleId` to
string IDs.
- Refactor `WorkflowHelpers.getSharedWorkflowIds()`.
This commit is contained in:
Iván Ovejero
2023-08-22 13:19:37 +02:00
committed by GitHub
parent f32e993227
commit 2cfa6d344e
20 changed files with 686 additions and 318 deletions

View File

@@ -6,7 +6,7 @@ import * as WorkflowHelpers from '@/WorkflowHelpers';
import config from '@/config';
import { WorkflowEntity } from '@db/entities/WorkflowEntity';
import { validateEntity } from '@/GenericHelpers';
import type { ListQueryRequest, WorkflowRequest } from '@/requests';
import type { ListQuery, WorkflowRequest } from '@/requests';
import { isSharingEnabled, rightDiff } from '@/UserManagement/UserManagementHelper';
import { EEWorkflowsService as EEWorkflows } from './workflows.services.ee';
import { ExternalHooks } from '@/ExternalHooks';
@@ -205,18 +205,14 @@ EEWorkflowController.post(
EEWorkflowController.get(
'/',
listQueryMiddleware,
async (req: ListQueryRequest, res: express.Response) => {
async (req: ListQuery.Request, res: express.Response) => {
try {
const [workflows, count] = await EEWorkflows.getMany(req.user, req.listQueryOptions);
const sharedWorkflowIds = await WorkflowHelpers.getSharedWorkflowIds(req.user);
let data;
if (req.listQueryOptions?.select) {
data = workflows;
} else {
const role = await Container.get(RoleService).findWorkflowOwnerRole();
data = workflows.map((w) => EEWorkflows.addOwnerId(w, role));
}
const { workflows: data, count } = await EEWorkflows.getMany(
sharedWorkflowIds,
req.listQueryOptions,
);
res.json({ count, data });
} catch (maybeError) {