GraphQL save self relation in custom resolver in amplify

0

I have the following models:

type Field @model {
  id: ID!
  fieldID: ID @index(name: "byField", sortKeyFields: ["name"])
  name: String!
  type: String!
  required: Boolean
  fields: [Field] @hasMany(indexName: "byField", fields: ["id"])
}
type Mutation {
    batchCreateField(fields: [BatchCreateField]): [Field]
}

input BatchCreateField {
  id: ID
  fieldID: ID
  name: String!
  type: String!
  required: Boolean
  fields: [BatchCreateField]
}

And wrote a custom resolver:

$util.log.info($util.toJson($context))
#set($isAuthorized = false)
#set( $createdAt = $util.time.nowISO8601() )
#set($fieldsArray = [])

#foreach($item in \${ctx.args.fields})
  $util.qr($item.put("id", $util.defaultIfNullOrBlank($item.id, $util.autoId())))
  $util.qr($item.put("createdAt", $util.defaultIfNull($item.createdAt, $createdAt)))
  $util.qr($item.put("updatedAt", $util.defaultIfNull($item.updatedAt, $createdAt)))
  $util.qr($item.put("__typename", "Field"))
  $util.qr($fieldsArray.add($util.dynamodb.toMapValues($item)))
#end
## [End] Initialization default values. **
$util.toJson( {
  "version": "2018-05-29",
  "operation": "BatchPutItem",
  "tables": {
    "Field-INSERT_APIID-INSERT_PROJECT_ENV": $fieldsArray
  }
} )

Saving in batch works fine, the self relation is not working. Is there any way i can save this self relation like below in a batch and the resolver autofilling the sub fields with the fieldID of the previously inserted field? Or am i thinking in the wrong way and should i be handling this in another way.

let fieldInput: CreateFieldInput = {
  name: field.name,
  type: field.type,
  required: field.required,
  fields: field.fields            
};

batchFieldsInput.push(fieldInput)

API.graphql(graphqlOperation(batchCreateField, {fields: batchFieldsInput}))

The data shown is just the subset of the payload. The datasets i'm saving are api's > endpoints (sometimes more than 100 endpoints) > fields & parameters (can be more than 100 per endpoint, since fields can have subfields, like shown), resulting in a very large amount of calls, if i cannot send the whole api object in one call.

No Answers

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions