8
8
} from '@nestjs/graphql' ;
9
9
import {
10
10
AnonSession ,
11
+ InvalidIdForTypeException ,
11
12
ListArg ,
12
13
LoggedInSession ,
13
14
mapSecuredValue ,
@@ -17,7 +18,11 @@ import {
17
18
import { Loader , LoaderOf } from '../../core' ;
18
19
import { CeremonyLoader , SecuredCeremony } from '../ceremony' ;
19
20
import { ChangesetIds , IdsAndView , IdsAndViewArg } from '../changeset/dto' ;
20
- import { EngagementLoader , EngagementService } from '../engagement' ;
21
+ import {
22
+ EngagementLoader ,
23
+ EngagementService ,
24
+ LanguageEngagementListOutput ,
25
+ } from '../engagement' ;
21
26
import {
22
27
CreateInternshipEngagementInput ,
23
28
CreateInternshipEngagementOutput ,
@@ -28,6 +33,7 @@ import {
28
33
EngagementListInput ,
29
34
EngagementListOutput ,
30
35
IEngagement ,
36
+ LanguageEngagement ,
31
37
UpdateInternshipEngagementInput ,
32
38
UpdateInternshipEngagementOutput ,
33
39
UpdateLanguageEngagementInput ,
@@ -48,6 +54,20 @@ export class EngagementResolver {
48
54
return await engagements . load ( key ) ;
49
55
}
50
56
57
+ @Query ( ( ) => LanguageEngagement , {
58
+ description : 'Lookup a LanguageEngagement by ID' ,
59
+ } )
60
+ async languageEngagement (
61
+ @IdsAndViewArg ( ) key : IdsAndView ,
62
+ @Loader ( EngagementLoader ) engagements : LoaderOf < EngagementLoader > ,
63
+ ) : Promise < Engagement > {
64
+ const engagement = await engagements . load ( key ) ;
65
+ if ( engagement . __typename !== 'LanguageEngagement' ) {
66
+ throw new InvalidIdForTypeException ( ) ;
67
+ }
68
+ return engagement ;
69
+ }
70
+
51
71
@Query ( ( ) => EngagementListOutput , {
52
72
description : 'Look up engagements' ,
53
73
} )
@@ -61,6 +81,26 @@ export class EngagementResolver {
61
81
return list ;
62
82
}
63
83
84
+ @Query ( ( ) => LanguageEngagementListOutput , {
85
+ description : 'Look up language engagements' ,
86
+ } )
87
+ async languageEngagements (
88
+ @ListArg ( EngagementListInput ) input : EngagementListInput ,
89
+ @AnonSession ( ) session : Session ,
90
+ @Loader ( EngagementLoader ) engagements : LoaderOf < EngagementLoader > ,
91
+ ) : Promise < EngagementListOutput > {
92
+ const list = await this . service . list (
93
+ {
94
+ ...input ,
95
+ filter : { ...input . filter , type : 'language' } ,
96
+ } ,
97
+ session ,
98
+ ) ;
99
+ engagements . primeAll ( list . items ) ;
100
+
101
+ return list ;
102
+ }
103
+
64
104
@ResolveField ( ( ) => SecuredCeremony )
65
105
async ceremony (
66
106
@Parent ( ) engagement : Engagement ,
0 commit comments