Мне нужна помощь в разработке модели данных для определения c ценообразования в приложении электронной коммерции. AWS Amplify / AppSyn c с DynamoDB используется для разработки. У меня есть первое работающее решение, но я новичок в GraphQL и DynamoDB, поэтому думаю, что должен быть лучший способ сделать это. У меня есть модель продукта с ~ 50к записями. На самом деле модель довольно проста и имеет два свойства: «цена» и «salePrice».
type Product @model {
id: ID!
sku: String!
price: Float!
salePrice: Float
discountPrice: DiscountPrice @connection
}
Теперь я хочу иметь c цены, указанные пользователем, где теоретически каждый покупатель может иметь свою цену. Я попытался создать для этого новую модель, которая выглядит следующим образом:
type DiscountPrice @model @auth(rules: [{ allow: owner }]) {
id: ID!
minQuantity: Int!
price: Float!
}
Чтобы установить цену, указанную пользователем c, я могу создать запись со свойством владельца для идентификатора пользователя. . Это работает, если я запрашиваю у пользователя, который является владельцем записи DiscountPrice. В противном случае я получу сообщение об ошибке «Не авторизован для доступа к цене со скидкой по типу продукта».
Запрос:
query getProduct {
getProduct(id: "xxx") {
id
sku
price
salePrice
discountPrice {
minQuantity
price
}
}
}
Это правильный способ моделирования такой функции? Как я могу избавиться от этой ошибки, если записи не существует, или как лучше использовать другой вариант?
Заранее спасибо