Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update subgraph implementations with latest schema changes #166

Closed
24 tasks done
dariuszkuc opened this issue Aug 11, 2022 · 4 comments
Closed
24 tasks done

Update subgraph implementations with latest schema changes #166

dariuszkuc opened this issue Aug 11, 2022 · 4 comments
Labels
type: schema change Change introduces change to the subgraph schemas

Comments

@dariuszkuc
Copy link
Member

dariuszkuc commented Aug 11, 2022

Issue to track which subgraph implementations should be updated due to the recent schema changes introduced for better @requires (#150) and @key (#165) tests.

Subgraph implementations:

Related issues:

@dariuszkuc dariuszkuc added the type: schema change Change introduces change to the subgraph schemas label Aug 11, 2022
@dariuszkuc
Copy link
Member Author

Updated product schema:

extend schema
  @link(
    url: "https://specs.apollo.dev/federation/v2.0",
    import: [
      "@extends",
      "@external",
      "@key",
      "@inaccessible",
      "@override",
      "@provides",
      "@requires",
      "@shareable",
      "@tag"
    ]
  )

type Product
  @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")
    notes: String @tag(name: "internal")
    research: [ProductResearch!]!
}

type DeprecatedProduct @key(fields: "sku package") {
  sku: String!
  package: String!
  reason: String
  createdBy: User
}

type ProductVariation {
  id: ID!
}

type ProductResearch @key(fields: "study { caseNumber }") {
  study: CaseStudy!
  outcome: String
}

type CaseStudy {
  caseNumber: ID!
  description: String
}

type ProductDimension @shareable {
  size: String
  weight: Float
  unit: String @inaccessible
}

extend type Query {
  product(id: ID!): Product
  deprecatedProduct(sku: String!, package: String!): DeprecatedProduct @deprecated(reason: "Use product query instead")
}

extend type User @key(fields: "email") {
  averageProductsCreatedPerYear: Int @requires(fields: "totalProductsCreated yearsOfEmployment")
  email: ID! @external
  name: String @override(from: "users")
  totalProductsCreated: Int @external
  yearsOfEmployment: Int! @external
}

Test data:

const dimension = {
  size: "small",
  weight: 1,
  unit: "kg"
};

const user = {
  averageProductsCreatedPerYear: if (totalProductsCreated) { 
    Math.round(totalProductsCreated / yearsOfEmployment)
  } else { 
    null
  },
  email: "support@apollographql.com",
  name: "Jane Smith",
  totalProductsCreated: 1337,
  yearsOfEmployment: 10
 };

 const deprecatedProduct = {
  sku: "apollo-federation-v1",
  package: "@apollo/federation-v1",
  reason: "Migrate to Federation V2",
  createdBy: user
};

const productsResearch = [
  {
    study: {
      caseNumber: "1234",
      description: "Federation Study"
    },
    outcome: null
  },
  {
    study: {
      caseNumber: "1235",
      description: "Studio Study"
    },
    outcome: null
  },
];

const products = [
  {
    id: "apollo-federation",
    sku: "federation",
    package: "@apollo/federation",
    variation: {
      id: "OSS"
    },
    dimensions: dimension,
    research: [productsResearch[0]]
    createdBy: user,
    notes: null
  },
  {
    id: "apollo-studio",
    sku: "studio",
    package: "",
    variation: {
      id: "platform"
    },
    dimensions: dimension,
    research: [productsResearch[1]]
    createdBy: user,
    notes: null
  },
];

dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Aug 11, 2022
Update `product` schema to allow for more granular testing of `@key` directive functionality.

Related issue:
* apollographql#166
dariuszkuc added a commit that referenced this issue Aug 11, 2022
Update `product` schema to allow for more granular testing of `@key` directive functionality.

Related issue:
* #166
@kdawgwilk
Copy link
Contributor

New test requires extend type User and doesn't allow for type User @extends for libraries that don't support the extend keyword

@kdawgwilk
Copy link
Contributor

Also looks like the ordering of the @key directives also can cause the test to fail. e.g. My code first SDL generates

type Product @key(fields: "sku variation { id }") @key(fields: "sku package") @key(fields: "id")

but the test is looking for

type Product @key(fields: "id") @key(fields: "sku package") @key(fields: "sku variation { id }")

and so it fails even though these are syntactically equivalent

@dariuszkuc
Copy link
Member Author

Thanks for catching those! I fixed the tests in #169 and #170 (you might need to rebase the PR).

dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Aug 12, 2022
dariuszkuc pushed a commit that referenced this issue Aug 15, 2022
dariuszkuc pushed a commit that referenced this issue Aug 23, 2022
Updates Ariadne's schema to match the latest schema, as mentioned here #166

I've moved the schema definition to a new file to make it easier to update in future, we could split the files more if needed 😊

Closes #180
hwillson added a commit that referenced this issue Sep 17, 2022
Covers the changes outlined in #166.

Fixes #192
dariuszkuc pushed a commit that referenced this issue Sep 19, 2022
dariuszkuc pushed a commit that referenced this issue Nov 3, 2022
…schema changes (#259)

This PR implement latest changes requested by #166 as requested by #179

ftv1 still not supported

Co-authored-by: Florian Chazal <chazalf@amazon.com>
dariuszkuc added a commit that referenced this issue Feb 8, 2023
dariuszkuc added a commit that referenced this issue Feb 8, 2023
dariuszkuc added a commit that referenced this issue Feb 9, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Feb 10, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Feb 10, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Feb 10, 2023
dariuszkuc added a commit that referenced this issue Feb 10, 2023
dariuszkuc added a commit that referenced this issue Feb 20, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Mar 3, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Mar 3, 2023
dariuszkuc added a commit that referenced this issue Mar 12, 2023
dariuszkuc added a commit to dariuszkuc/apollo-federation-subgraph-compatibility that referenced this issue Mar 23, 2023
dariuszkuc added a commit that referenced this issue Mar 27, 2023
See #166 for details.

Resolves #190
---------

Co-authored-by: Benedikt Franke <benedikt.franke@mll.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: schema change Change introduces change to the subgraph schemas
Projects
None yet
Development

No branches or pull requests

2 participants