Azure / Azure/data-api-builder

Cosmos updates require id field on input object as well as mutation argument

Abierto
#625 3 comentarios 0 reacciones 2 asignados Reclamado por @tarazou9 Ver en GitHub
bug cosmos graphql
Lenguaje dominante
C#
Estrellas
1.5k
Forks
370
Merge medio
3 d 22 h
PR fusionados (30 d)
9

Descripción

Given an ObjectType defined like so:

```graphql
type Planet @model {
id: ID
name: String
character: Character
age: Int
dimension: String
stars: [Star]
}
```

The following update mutation is generated:

```graphql
updatePlanet(
id: ID!
_partitionKeyValue: String!
item: UpdatePlanetInput!
): Planet
```

And it requires an `UpdatePlanetInput` defined here:

```graphql
input UpdatePlanetInput {
id: ID
name: String
character: UpdateCharacterInput
age: Int
dimension: String
stars: [UpdateStarInput]
}
```

The `id` parameter is required to the `updatePlanet` mutation, but it also appears on the `UpdatePlanetInput`, but it's nullable, as the update is a partial update.

When run, this will result in an error that the update has failed because the `id` field wasn't provided on the object passed to `container.ReplaceItem`.

Manually providing the value for `id` on the `item` parameter will solve this (but can run into #296, depending on how you provide the value).

It probably makes sense that if the `id` is not provided on the `item` parameter, we inject it before calling the Cosmos SDK.

Also, should we be using `UpsertItem` not `ReplaceItem` to perform the partial update against a Cosmos document?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.