Skip to content

Commit 7896fb6

Browse files
committed
Add ref to project in workflow event, so it can be used in policies
1 parent 385a73c commit 7896fb6

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
lines changed

src/components/project/project.edgedb.repository.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,15 @@ import {
1616
} from './dto';
1717
import { ProjectRepository as Neo4jRepository } from './project.repository';
1818

19-
const hydrate = e.shape(e.Project, (project) => ({
20-
...project['*'],
19+
export const projectRefShape = e.shape(e.Project, (project) => ({
20+
id: true,
2121
// default::TranslationProject -> Translation, etc.
2222
type: castToEnum(project.__type__.name.slice(9, -7), ProjectType),
23+
}));
24+
25+
const hydrate = e.shape(e.Project, (project) => ({
26+
...project['*'],
27+
...projectRefShape(project),
2328
// default::TranslationProject -> TranslationProject, etc.
2429
__typename: project.__type__.name.slice(9, null),
2530

src/components/project/workflow/dto/workflow-event.dto.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { SecuredProps } from '~/common';
44
import { e } from '~/core/edgedb';
55
import { RegisterResource } from '~/core/resources';
66
import { WorkflowEvent } from '../../../workflow/dto';
7-
import { ProjectStep } from '../../dto';
7+
import { IProject, ProjectStep } from '../../dto';
88
import { ProjectWorkflowTransition } from './workflow-transition.dto';
99

1010
@RegisterResource({ db: e.Project.WorkflowEvent })
@@ -17,6 +17,8 @@ export abstract class ProjectWorkflowEvent extends WorkflowEvent(
1717
static readonly SecuredProps = keysOf<SecuredProps<ProjectWorkflowEvent>>();
1818
static readonly BaseNodeProps = WorkflowEvent.BaseNodeProps;
1919
static readonly ConfirmThisClassPassesSensitivityToPolicies = true;
20+
21+
readonly project: Pick<IProject, 'id' | 'type'>;
2022
}
2123

2224
declare module '~/core/resources/map' {

src/components/project/workflow/project-workflow.neo4j.repository.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ export class ProjectWorkflowNeo4jRepository
6161
return (query: Query) =>
6262
query
6363
.match([
64+
node('project', 'Project'),
65+
relation('out', '', 'workflowEvent', ACTIVE),
6466
node('node'),
6567
relation('out', undefined, 'who'),
6668
node('who', 'User'),
@@ -69,6 +71,7 @@ export class ProjectWorkflowNeo4jRepository
6971
merge('node', {
7072
at: 'node.createdAt',
7173
who: 'who { .id }',
74+
project: 'project { .id, .type }',
7275
}).as('dto'),
7376
);
7477
}

src/components/project/workflow/project-workflow.repository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
22
import { ID, Session } from '~/common';
33
import { e, edgeql, RepoFor } from '~/core/edgedb';
44
import { ProjectStep } from '../dto';
5+
import { projectRefShape } from '../project.edgedb.repository';
56
import { ExecuteProjectTransitionInput, ProjectWorkflowEvent } from './dto';
67

78
@Injectable()
@@ -13,6 +14,7 @@ export class ProjectWorkflowRepository extends RepoFor(ProjectWorkflowEvent, {
1314
transition: event.transitionKey,
1415
to: true,
1516
notes: true,
17+
project: projectRefShape,
1618
}),
1719
omit: ['list', 'create', 'update', 'delete', 'readMany'],
1820
}) {

src/components/project/workflow/project-workflow.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class ProjectWorkflowService extends WorkflowService(
5252
return await this.resolveAvailable(
5353
project.step.value!,
5454
{ project, moduleRef: this.moduleRef },
55-
project,
55+
{ ...project, project },
5656
session,
5757
);
5858
}

0 commit comments

Comments
 (0)