When the user does not send $context.arguments.input.isActive
I replace this null
value to a default one, like this:
#set($isActive = $utils.defaultIfNullOrEmpty($context.arguments.input.isActive, true))
But for some reason, this isActive
is saved as null
.
For example:
I have defined in the schema.graphql
this mutation:
type Mutation {
updateAccount(input: AccountInput!): Boolean
@aws_auth(cognito_groups: ["SuperAdmin"])
}
input AccountInput {
id: ID!
name: String!
picture: String!
isActive: Boolean
}
So, when the user does not send the isActive
, like this:
mutation {
updateAccount(input: {
id: "xxxxx"
name: "xxxxx"
picture: "public/xxxxx/xxxxxx.jpg"
})
}
The isActive
value is saved as null
. And should be saved as true
Here's the complete code of the Resolver of updateAccount
:
#set($id = $context.arguments.input.id)
#set($currentDate = $utils.time.nowISO8601())
#set($isActive = $utils.defaultIfNullOrEmpty($context.arguments.input.isActive, true))
{
"version": "2018-05-29",
"operation": "UpdateItem",
"key": {
"id": $utils.dynamodb.toDynamoDBJson($id)
},
"update": {
"expression": "SET #name = :name, #picture = :picture, #isActive = :isActive, #updatedAt = :updatedAt",
"expressionNames": {
"#name": "name",
"#picture": "picture",
"#isActive": "isActive",
"#updatedAt": "updatedAt"
},
"expressionValues": {
":name": $utils.dynamodb.toDynamoDBJson($context.arguments.input.name),
":picture": $utils.dynamodb.toDynamoDBJson($context.arguments.input.picture),
":isActive": $utils.dynamodb.toDynamoDBJson($isActive),
":updatedAt": $util.dynamodb.toDynamoDBJson($currentDate)
}
},
"condition": {
"expression": "attribute_exists(id)"
}
}