Skip to content

Commit

Permalink
add projects resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
mtrenker committed Jun 21, 2020
1 parent 6937752 commit 446bf8d
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 32 deletions.
49 changes: 18 additions & 31 deletions cdk/resources/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ scalar AWSDateTime

scalar AWSJSON

type Query {
page(input: PageInput!): Page
@aws_api_key
projects: ProjectConnection!
trackings(query: TrackingQuery): TrackingConnection!
}

type Mutation {
# saveProject(input: ProjectInput!): Project!
### @aws_auth(cognito_groups: ["Admins"])
track(input: TrackingInput!): Tracking!
@aws_cognito_user_pools(cognito_groups: ["Admins"])
}

type Page @aws_api_key @aws_cognito_user_pools {
Expand All @@ -17,8 +21,9 @@ type Page @aws_api_key @aws_cognito_user_pools {
content: String!
}

input PageInput {
slug: String!
type ProjectConnection {
items: [Project!]!
nextToken: String
}

type Project {
Expand All @@ -32,43 +37,25 @@ type Project {
technologies: [String!]!
}

type Query @aws_api_key @aws_cognito_user_pools {
projects: [Project!]!
page(input: PageInput!): Page
trackings(query: TrackingQuery): Trackings!
@aws_cognito_user_pools
}

type Trackings {
type TrackingConnection {
items: [Tracking!]!
nextToken: String
}

# type User {
### first_name: String!
### last_name: String!
### email: String!
### }
type Tracking @aws_api_key @aws_cognito_user_pools {
type Tracking {
id: ID!
project: Project
@aws_cognito_user_pools
description: String!
@aws_cognito_user_pools
startTime: AWSDateTime!
endTime: AWSDateTime!
}

# input UserInput {
### first_name: String!
### last_name: String!
### email: String!
### }
### input ProjectInput {
### name: String!
### description: String
### approval_contact: UserInput
### }
# INPUTS

input PageInput {
slug: String!
}

input TrackingInput {
id: ID
projectId: String!
Expand Down
18 changes: 17 additions & 1 deletion cdk/stacks/ApiStack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
Stack, App, StackProps, CfnOutput, Fn,
} from '@aws-cdk/core';
import {
GraphQLApi, DynamoDbDataSource, MappingTemplate, UserPoolDefaultAction, CfnApiKey, AuthorizationType,
GraphQLApi, DynamoDbDataSource, MappingTemplate, UserPoolDefaultAction, CfnApiKey, AuthorizationType, KeyCondition,
} from '@aws-cdk/aws-appsync';
import { UserPool } from '@aws-cdk/aws-cognito';
import { Table, ITable } from '@aws-cdk/aws-dynamodb';
Expand Down Expand Up @@ -49,6 +49,7 @@ export class ApiStack extends Stack {
const trackFunction = this.trackFunction(table, eventBusArn, eventBusName);

ApiStack.addPageResolver(queryDataSource);
ApiStack.addProjectsResolver(queryDataSource);
ApiStack.addTrackingsResolver(queryDataSource);
ApiStack.trackResolver(api, trackFunction);

Expand Down Expand Up @@ -92,6 +93,21 @@ export class ApiStack extends Stack {
});
}

static addProjectsResolver(queryDataSource: DynamoDbDataSource): void {
const keyCondition = KeyCondition.beginsWith('id', "project-")
queryDataSource.createResolver({
fieldName: 'projects',
typeName: 'Query',
requestMappingTemplate: MappingTemplate.dynamoDbQuery(keyCondition),
responseMappingTemplate: MappingTemplate.fromString(`
{
"items": $util.toJson($ctx.result.items),
"nextToken": $util.toJson($util.defaultIfNullOrBlank($context.result.nextToken, null))
}
`),
});
}

static addTrackingsResolver(queryDataSource: DynamoDbDataSource): void {
queryDataSource.createResolver({
fieldName: 'trackings',
Expand Down

0 comments on commit 446bf8d

Please sign in to comment.