Skip to content

Commit c54e329

Browse files
authored
Merge pull request #3283 from SeedCompany/engagement-refactor
Refactor Engagement module / Prep for EdgeDB
2 parents 581f9b6 + 0580dd6 commit c54e329

13 files changed

+298
-344
lines changed

src/components/ceremony/handlers/create-engagement-default-ceremony.handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class CreateEngagementDefaultCeremonyHandler
4848

4949
event.engagement = {
5050
...engagement,
51-
ceremony: ceremonyId,
51+
ceremony: { id: ceremonyId },
5252
};
5353
}
5454
}

src/components/ceremony/handlers/delete-engagement-default-ceremony.handler.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
1-
import { EventsHandler, IEventHandler } from '~/core';
1+
import { ConfigService, EventsHandler, IEventHandler } from '~/core';
22
import { EngagementWillDeleteEvent } from '../../engagement/events';
33
import { CeremonyService } from '../ceremony.service';
44

55
@EventsHandler(EngagementWillDeleteEvent)
66
export class DetachEngagementRootDirectoryHandler
77
implements IEventHandler<EngagementWillDeleteEvent>
88
{
9-
constructor(private readonly ceremonies: CeremonyService) {}
9+
constructor(
10+
private readonly ceremonies: CeremonyService,
11+
private readonly config: ConfigService,
12+
) {}
1013

1114
async handle({ engagement, session }: EngagementWillDeleteEvent) {
12-
const ceremonyId = engagement?.ceremony?.value;
15+
if (this.config.databaseEngine === 'edgedb') {
16+
return;
17+
}
18+
19+
const ceremonyId = engagement?.ceremony?.value?.id;
1320
if (!ceremonyId) {
1421
return;
1522
}

src/components/engagement/dto/engagement.dto.ts

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,25 @@ import {
77
DateInterval,
88
DateTimeField,
99
DbLabel,
10-
ID,
1110
IntersectTypes,
1211
parentIdMiddleware,
1312
Resource,
1413
ResourceRelationsShape,
1514
Secured,
1615
SecuredBoolean,
1716
SecuredDateNullable,
18-
SecuredDateTime,
17+
SecuredDateTimeNullable,
1918
SecuredProps,
2019
SecuredRichTextNullable,
21-
SecuredString,
20+
SecuredStringNullable,
2221
Sensitivity,
2322
SensitivityField,
2423
UnsecuredDto,
2524
} from '~/common';
2625
import { BaseNode } from '~/core/database/results';
2726
import { e } from '~/core/edgedb';
2827
import { LinkTo, RegisterResource } from '~/core/resources';
29-
import { ScopedRole } from '../../authorization/dto';
3028
import { ChangesetAware } from '../../changeset/dto';
31-
import { DefinedFile } from '../../file/dto';
3229
import { Product, SecuredMethodologies } from '../../product/dto';
3330
import {
3431
InternshipProject,
@@ -80,7 +77,7 @@ class Engagement extends Interfaces {
8077
@DbLabel('EngagementStatus')
8178
readonly status: SecuredEngagementStatus;
8279

83-
readonly ceremony: Secured<ID>;
80+
readonly ceremony: Secured<LinkTo<'Ceremony'>>;
8481

8582
@Field({
8683
description: 'Translation / Growth Plan complete date',
@@ -119,25 +116,21 @@ class Engagement extends Interfaces {
119116

120117
@Field()
121118
// Convert from date to datetime at migration
122-
readonly lastSuspendedAt: SecuredDateTime;
119+
readonly lastSuspendedAt: SecuredDateTimeNullable;
123120

124121
@Field()
125122
// Convert from date to datetime at migration
126-
readonly lastReactivatedAt: SecuredDateTime;
123+
readonly lastReactivatedAt: SecuredDateTimeNullable;
127124

128125
@Field({
129126
description: 'The last time the engagement status was modified',
130127
})
131128
// Convert from last terminated/completed at migration
132-
readonly statusModifiedAt: SecuredDateTime;
129+
readonly statusModifiedAt: SecuredDateTimeNullable;
133130

134131
@DateTimeField()
135132
readonly modifiedAt: DateTime;
136133

137-
// A list of non-global roles the requesting user has available for this object.
138-
// This is just a cache, to prevent extra db lookups within the same request.
139-
declare readonly scope: ScopedRole[];
140-
141134
@Field()
142135
readonly description: SecuredRichTextNullable;
143136
}
@@ -166,7 +159,7 @@ export class LanguageEngagement extends Engagement {
166159
@Field(() => TranslationProject)
167160
declare readonly parent: BaseNode;
168161

169-
readonly language: Secured<ID>;
162+
readonly language: Secured<LinkTo<'Language'>>;
170163

171164
@Field()
172165
readonly firstScripture: SecuredBoolean;
@@ -183,12 +176,12 @@ export class LanguageEngagement extends Engagement {
183176
readonly sentPrintingDate: SecuredDateNullable;
184177

185178
@Field()
186-
readonly paratextRegistryId: SecuredString;
179+
readonly paratextRegistryId: SecuredStringNullable;
187180

188-
readonly pnp: DefinedFile;
181+
readonly pnp: Secured<LinkTo<'File'> | null>;
189182

190183
@Field()
191-
readonly historicGoal: SecuredString;
184+
readonly historicGoal: SecuredStringNullable;
192185
}
193186

194187
@RegisterResource({ db: e.InternshipEngagement })
@@ -207,11 +200,11 @@ export class InternshipEngagement extends Engagement {
207200
@Field(() => InternshipProject)
208201
declare readonly parent: BaseNode;
209202

210-
readonly countryOfOrigin: Secured<ID | null>;
203+
readonly countryOfOrigin: Secured<LinkTo<'Location'> | null>;
211204

212-
readonly intern: Secured<ID>;
205+
readonly intern: Secured<LinkTo<'User'>>;
213206

214-
readonly mentor: Secured<ID | null>;
207+
readonly mentor: Secured<LinkTo<'User'> | null>;
215208

216209
@Field()
217210
@DbLabel('InternPosition')
@@ -221,7 +214,7 @@ export class InternshipEngagement extends Engagement {
221214
@DbLabel('ProductMethodology')
222215
readonly methodologies: SecuredMethodologies;
223216

224-
readonly growthPlan: DefinedFile;
217+
readonly growthPlan: Secured<LinkTo<'File'> | null>;
225218
}
226219

227220
export const engagementRange = (engagement: UnsecuredDto<Engagement>) =>

0 commit comments

Comments
 (0)