Я занимаюсь разработкой веб-приложения с использованием AWS Amplify и AppSync для чтения и записи моих данных в таблицы DynamoDB. Используя преобразования GraphQL *1001* Amplify, достаточно легко установить связь между типами данных с помощью преобразования @connection
. Я хотел бы знать, возможно ли удалить связанные данные в упрощенном или полуавтоматическом режиме.
Предположим простой пример блога, где у пользователя есть блог, в котором есть посты, в которых, в свою очередь, есть комментарии, принадлежащие другим пользователям. Если сообщение удалено, я хотел бы удалить комментарии, связанные с этим сообщением. Если пользователь удален, я хотел бы удалить его блог, сообщения и комментарии, связанные с этими сообщениями, а также любые комментарии, оставленные пользователем в других сообщениях. Этот пример изобретен тем, что, возможно, желательно, чтобы некоторые из этих данных были сохранены в некоторой форме. Однако в некоторых случаях это именно то, что я ищу.
При работе с Prisma в прошлом я использовал их директиву @relation
, чтобы сделать отношения, аналогичные использованию @connection
Amplify.
Однако в тех случаях, когда я хотел каскадного удаления, я писал бы что-то вроде:
type Post {
id: ID! @unique
title: String!
body: String!
owner: ID!
comments: [Comment!] @relation(name: "PostComments",
onDelete: CASCADE)
}
Я мог бы использовать и установить для параметра onDelete
значение CASCADE
или SET_NULL
в зависимости от того, как я хотел с ним справиться.
Есть ли способ сделать что-то подобное через Amplify? Конечно, я могу написать кучу резольверов VTL или Lambda для каждого случая, но сначала я хотел проверить, есть ли более быстрый / простой способ реализовать это.