This reposotory represents my learning abount GraphQL Federation with Apollo.
extend schema
@link(
url: "https://specs.apollo.dev/federation/v2.0"
import: ["@key", "@external"]
)
type Book @key(fields: "authorId") {
title: String
authorId: Int
author: Author
}
extend type Author @key(fields: "id") {
id: ID! @external
}
type Query {
books: [Book]
}
Query: {
books: () => books,
},
Book: {
author: (book) => {
return { __typename: "Author", id: book.authorId };
},
}
extend schema
extend schema @link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key"])
type Author @key(fields: "id") {
id: ID!
name: String
}
type Query {
authors: [Author]
}
Query: {
authors: () => authors,
},
Author: {
__resolveReference(object) {
return authors.find((user) => user.id == object.id);
},
},
Author query
query AuthorQuery {
authors {
id
name
}
}
Author with Book list query
query AuthorWithListOfBook {
authors {
id
name
books {
nodes {
id
title
}
}
}
Books query
query BooksQuery {
books {
title
authorId
}
}
Books with author query
query BooksWithAuthorQuery {
books {
title
authorId
author {
id
name
}
}
}
- Start all services and API's
yarn start
- Start ONLY Books API
yarn start:one
- Start ONLY Author API
yarn start:two