Mutation 을 활용한다.
const typeDefs = gql`
type Book {
title: String
author: String
url: String
bookId: Int
}
type Query {
books: [Book]
bookId(bookId: Int): Book
bookTitle(title: String): Book
}
type Mutation {
addBook(title: String, author: String, url: String): Book
}
`;
const resolvers = {
Query: {
// books: () => books,
books: () => {
return JSON.parse(readFileSync(join(__dirname, "books.json")).toString());
},
bookId: (parent, args, context, info) => {
const books = JSON.parse(
readFileSync(join(__dirname, "books.json")).toString()
);
return books.find((book) => book.bookId === args.bookId);
},
},
Mutation: {
addBook: (parent, args, context, info) => {
const books = JSON.parse(
readFileSync(join(__dirname, "books.json")).toString()
);
const maxId = Math.max(...books.map((book) => book.bookId));
const newBook = { ...args, bookId: maxId + 1 };
writeFileSync(
join(__dirname, "books.json"),
JSON.stringify([...books, newBook])
);
return newBook;
},
},
};