Skip to content

Commit 244cae3

Browse files
committed
Change CreateEngagement inputs to create their prop lists from native esm classes
This works as long as there is no type mapping in the inheritance chain. This is fine for this single use case. And this can also go away once we finish Gel migration.
1 parent f1e0cc4 commit 244cae3

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/components/engagement/dto/create-engagement.dto.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { Field, InputType, ObjectType } from '@nestjs/graphql';
2+
import { entries } from '@seedcompany/common';
23
import { Type } from 'class-transformer';
34
import { ValidateNested } from 'class-validator';
45
import { stripIndent } from 'common-tags';
5-
import { keys as keysOf } from 'ts-transformer-keys';
6-
import { CalendarDate, DateField, ID, IdField } from '~/common';
6+
import { CalendarDate, DataObject, DateField, ID, IdField } from '~/common';
77
import { ChangesetIdField } from '../../changeset';
88
import { CreateDefinedFileVersionInput } from '../../file/dto';
99
import { LanguageMilestone } from '../../language/dto';
@@ -16,7 +16,7 @@ import { EngagementStatus } from './status.enum';
1616
@InputType({
1717
isAbstract: true,
1818
})
19-
export abstract class CreateEngagement {
19+
export abstract class CreateEngagement extends DataObject {
2020
@IdField()
2121
readonly projectId: ID;
2222

@@ -37,8 +37,11 @@ export abstract class CreateEngagement {
3737
}
3838

3939
@InputType()
40-
export abstract class CreateLanguageEngagement extends CreateEngagement {
41-
static readonly Props = keysOf<CreateLanguageEngagement>();
40+
export class CreateLanguageEngagement extends CreateEngagement {
41+
// Warning: this only works if not doing inheritance type mapping
42+
static readonly Props = entries(
43+
CreateLanguageEngagement.defaultValue(CreateLanguageEngagement),
44+
).map(([k]) => k);
4245

4346
@IdField()
4447
readonly languageId: ID;
@@ -81,8 +84,11 @@ export abstract class CreateLanguageEngagement extends CreateEngagement {
8184
}
8285

8386
@InputType()
84-
export abstract class CreateInternshipEngagement extends CreateEngagement {
85-
static readonly Props = keysOf<CreateInternshipEngagement>();
87+
export class CreateInternshipEngagement extends CreateEngagement {
88+
// Warning: this only works if not doing inheritance type mapping
89+
static readonly Props = entries(
90+
CreateInternshipEngagement.defaultValue(CreateInternshipEngagement),
91+
).map(([k]) => k);
8692

8793
@IdField()
8894
readonly internId: ID;

0 commit comments

Comments
 (0)