in Infra/lib/stack/AppSyncStack.ts [26:97]
constructor(scope: Construct, id: string, props: AppsyncStackProps) {
super(scope, id, props);
// Creates the AppSync API
const api = new appsync.GraphqlApi(this, "ChimeSessionEventsApi", {
name: "chime-session-api",
schema: appsync.Schema.fromAsset(
path.join(__dirname, "../graphql/schema.graphql")
),
authorizationConfig: {
defaultAuthorization: {
authorizationType: appsync.AuthorizationType.USER_POOL,
userPoolConfig: {
userPool: props.userPool,
defaultAction: appsync.UserPoolDefaultAction.ALLOW,
},
},
},
xrayEnabled: true,
});
const noneDataSource = api.addNoneDataSource("NoneDataSource");
const meetingRequestTemplate = MappingTemplate.fromString(
'{"version": "2018-05-29", "payload": { "meeting": "${ctx.args.meeting}", "attendee": "${ctx.args.attendee}", "username": "${ctx.args.username}" } }'
);
const meetingResponseTemplate = MappingTemplate.fromString(
"$util.toJson($context.result)"
);
const claimChimeSessionRequestTemplate = MappingTemplate.fromString(
'{"version": "2018-05-29", "payload": "${ctx.args.meeting}"}'
);
noneDataSource.createResolver({
typeName: "Query",
fieldName: "stub",
requestMappingTemplate: meetingRequestTemplate,
responseMappingTemplate: meetingResponseTemplate,
});
noneDataSource.createResolver({
typeName: "Mutation",
fieldName: "startChimeSession",
requestMappingTemplate: meetingRequestTemplate,
responseMappingTemplate: meetingResponseTemplate,
});
noneDataSource.createResolver({
typeName: "Mutation",
fieldName: "claimChimeSession",
requestMappingTemplate: claimChimeSessionRequestTemplate,
responseMappingTemplate: meetingResponseTemplate,
});
noneDataSource.createResolver({
typeName: "Subscription",
fieldName: "chimeSessionStarted",
requestMappingTemplate: meetingRequestTemplate,
responseMappingTemplate: meetingResponseTemplate,
});
noneDataSource.createResolver({
typeName: "Subscription",
fieldName: "chimeSessionClaimed",
requestMappingTemplate: claimChimeSessionRequestTemplate,
responseMappingTemplate: meetingResponseTemplate,
});
this.graphqlApi = api;
}