typescript - Amplify autocompletar propietario en clave
Estoy usando la API de AWS Amplify (según entiendo, esto es AWS AppSync y Amplify DataStore) con TypeScript.
He creado un tipo de GraphQL
type PrivateNote
@model
@auth(rules: [{ allow: owner, ownerField: "owner" }])
@key(fields: ["owner", "id"]) {
owner: String!
id: ID!
content: String!
}
Nota el @auth que especifica ownerField: "owner" y el @key incluyendo owner.
El objetivo de ese tipo es que solo los creadores ("propietario") puedan ver/actualizar/eliminar sus datos y que la clave primaria generada de DynamoDB sea ["propietario", "id"].
Usando el tipo como se indica arriba, puedo generar el código con éxito usando
for backend code
amplify api gql-compile
for frontend code
amplify codegen model --nodownload
El problema es que ahora tengo que establecer explícitamente al propietario al crear instancias de PrivateNote como
const n = new PrivateNote({
content: "my content",
owner: "the-owner-id"
});
Si no establezco el owner, el compilador de TypeScript se queja y también hay un error en tiempo de ejecución que dice
La propiedad 'owner' falta en el tipo ...
Antes de establecer el @key en el esquema de GraphQL (y por lo tanto también omitirlo en la lista de campos de PrivateNote), no tenía que establecer owner, se hacía automáticamente en segundo plano.
Entonces, ¿cómo puedo agregar el propietario a un @key y aún así tenerlo autocompletado? ¿Y qué se necesita cambiar para que las tipificaciones de TypeScript se generen en consecuencia?