Sdk

Mutate JSON

Create/update resources and relations in a single request.

Mutate JSON

Mutate is designed for batched writes.

Create / Update

final body = LaravelRestApiMutateBody(
  mutate: [
    Mutation(
      operation: MutationOperation.create,
      attributes: {'name': 'New item'},
    ),
    Mutation(
      operation: MutationOperation.update,
      key: 10,
      attributes: {'name': 'Updated name'},
    ),
  ],
);

final res = await repo.mutate(body: body);
print(res.data?.created);
print(res.data?.updated);

Nested relations (grouped by table)

Relations must be grouped by table name, and multipleRelation becomes an array.

final body = LaravelRestApiMutateBody(
  mutate: [
    Mutation(
      operation: MutationOperation.update,
      key: 10,
      attributes: {'name': 'Updated'},
      relations: [
        // 1:1 relation
        MutationRelation(
          table: 'author',
          relationType: RelationType.singleRelation,
          operation: MutationRelationOperation.attach,
          key: 1,
        ),
        // 1:N or N:N relation
        MutationRelation(
          table: 'tags',
          relationType: RelationType.multipleRelation,
          operation: MutationRelationOperation.sync,
          key: 2,
        ),
        MutationRelation(
          table: 'tags',
          relationType: RelationType.multipleRelation,
          operation: MutationRelationOperation.sync,
          key: 3,
        ),
      ],
    ),
  ],
);

await repo.mutate(body: body);