|
- import { ApolloServer, PubSub } from "apollo-server/dist";
- import { Resolvers, ChangePizzaDto, ChangeToppingDto } from "./generated/graphql";
- import { pizzaSchema } from "./schema/pizza";
- import { PizzaResolver } from "./resolver/pizza-resolver";
- import { ToppingResolver } from "./resolver/topping-resolver";
-
- const resolvers: Resolvers = {
- Topping: {
- id: (root, args, context) => {
- return root.id
- },
- name: (root, args, context) => {
- return root.name
- },
- },
- Pizza: {
- id: (root, args, context) => {
- return root.id
- },
- name: (root, args, context) => {
- return root.name
- },
- toppings: (root, args, context) => {
- return root.toppings
- },
- },
- Query: {
- getPizzaById: (root, args, context) => {
- return PizzaResolver.getById(args.pizzaId);
- },
- getPizzaByName: (root, args, context) => {
- return PizzaResolver.getByName(args.pizzaName);
- },
- listPizza: (root, args, context) => {
- return PizzaResolver.list();
- },
- getToppingById: (root, args, context) => {
- return ToppingResolver.getById(args.toppingId);
- },
- getToppingByName: (root, args, context) => {
- return ToppingResolver.getByName(args.toppingName);
- },
- listTopping: (root, args, context) => {
- return ToppingResolver.list();
- },
- },
- Mutation: {
- createPizza: (root, args, context) => {
- return PizzaResolver.create(args.createPizzaDto as ChangePizzaDto);
- },
- updatePizza: (root, args, context) => {
- return PizzaResolver.update(args.pizzaId, args.updatedPizzaDto as ChangePizzaDto);
- },
- createTopping: (root, args, context) => {
- return ToppingResolver.create(args.createToppingDto as ChangeToppingDto);
- },
- updateTopping: (root, args, context) => {
- return ToppingResolver.update(args.toppingId, args.updatedToppingDto as ChangeToppingDto);
- },
- },
- Subscription: {
- pizzasChanged: {
- subscribe: () => PizzaResolver.pizzaEvent.asyncIterator(PizzaResolver.events.PIZZA_CHANGED)
-
- },
- toppingsChanged: {
- subscribe: () => ToppingResolver.toppingEvent.asyncIterator(ToppingResolver.events.TOPPING_CHANGED)
- },
- }
- }
-
- const server = new ApolloServer({
- typeDefs: pizzaSchema,
- resolvers: resolvers as any,
- }
- );
-
- server.listen().then(({ url, subscriptionsUrl }) => {
- console.log(`🚀 Server ready at ${url}`)
- console.log(`🚀 Subscriptions ready at ${subscriptionsUrl}`);
- });
|