From 444044899ded01ed27de1129609208315791d4f6 Mon Sep 17 00:00:00 2001 From: Phil Prasek Date: Tue, 22 Feb 2022 13:57:19 -0800 Subject: [PATCH] interfaces implementing interfaces with Fed 1 composition Signed-off-by: Phil Prasek --- subgraphs/products/products.graphql | 30 ++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/subgraphs/products/products.graphql b/subgraphs/products/products.graphql index f204f443..67531a1d 100644 --- a/subgraphs/products/products.graphql +++ b/subgraphs/products/products.graphql @@ -1,29 +1,41 @@ -directive @tag(name: String!) repeatable on FIELD_DEFINITION +type Query { + allProducts: [ProductItf] + product(id: ID!): ProductItf +} -type Product @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){ +interface ProductItf implements SkuItf { id: ID! @tag(name: "hi-from-products") sku: String @tag(name: "hi-from-products") package: String variation: ProductVariation dimensions: ProductDimension + createdBy: User +} - createdBy: User @provides(fields: "totalProductsCreated") +interface SkuItf { + sku: String } +type Product implements ProductItf & SkuItf @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }"){ + id: ID! + sku: String + package: String + variation: ProductVariation + dimensions: ProductDimension + createdBy: User @provides(fields: "totalProductsCreated") +} +enum ShippingClass { + STANDARD + EXPRESS +} type ProductVariation { id: ID! } - type ProductDimension { size: String weight: Float } -extend type Query { - allProducts: [Product] - product(id: ID!): Product -} - extend type User @key(fields: "email") { email: ID! @external totalProductsCreated: Int @external