0

I have an enum in my schema in the following way:

type Item {
  name: String!
}

enum ItemType {
    Simple
    Advanced
}

input ValueSimple { simple: Int }

input ValueAdvanced { advanced: Int }

input InputItemSchedule {
  type: ItemType!

  valueSimple: ValueSimple

  valueAdvanced: ValueAdvanced
}


mutation Mutation {
  addItem(name: String!, schedule: [InputItemSchedule]!): Item
}

I am trying to do conditional checks in the AppSync resolver template (data source id DynamoDB) but I don't know how to get the value for the item type:

#set($schedule = {})
#foreach($item in $context.args.schedule)
    #set($scheduleItem = { })
    #if($item.type == "Simple")
        #set($scheduleItem.value = $item.valueSimple)
    #elseif($item.type == "Advanced")
        #set($scheduleItem.value = $item.valueAdvanced)
    #else
        ## Set the type value to value for testing purposes 
        #set($scheduleItem.value = $util.dynamodb.toDynamoDBJson($item.type))
    #end
    $util.qr($schedule.add($scheduleItem))
#end

{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
    },
    "attributeValues" : {
        "name": $util.dynamodb.toDynamoDBJson($ctx.args.name),
        "schedule": $util.dynamodb.toDynamoDBJson($schedule)
    }
}

When I make a request that triggers the resolver regardless of the enum value, I keep getting the following in DynamoDB:

...
"value": {
  "S": "null"
}

How am I supposed to read the GraphQL enum value from the resolver template?

Gasim
  • 7,615
  • 14
  • 64
  • 131

0 Answers0