diff --git a/src/index.ts b/src/index.ts index 925c9bc..a515826 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ import { readFileSync } from "fs"; import { ApolloServer } from "@apollo/server"; import { startStandaloneServer } from "@apollo/server/standalone"; -import { resolvers } from "./resolvers"; +import { MergedResolvers } from "./resolvers"; import { ServerContext } from "./ServerContext"; import { UnoptimizedInMemoryRepository } from "./repositories/UnoptimizedInMemoryRepository"; import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepositoryLoader"; @@ -11,7 +11,7 @@ const typeDefs = readFileSync("./schema.graphqls", "utf8"); async function main() { const server = new ApolloServer({ typeDefs, - resolvers, + resolvers: MergedResolvers, introspection: process.env.NODE_ENV !== "production", }); diff --git a/src/resolvers.ts b/src/mergedResolvers.ts similarity index 91% rename from src/resolvers.ts rename to src/mergedResolvers.ts index 24718ac..b5b56b2 100644 --- a/src/resolvers.ts +++ b/src/mergedResolvers.ts @@ -1,29 +1,9 @@ import { Coordinates, Eta, OrderedStop, Resolvers } from "./generated/graphql"; import { ServerContext } from "./ServerContext"; +import { QueryResolvers } from "./resolvers/QueryResolvers"; -export const resolvers: Resolvers = { - Query: { - systems: async (parent, args, contextValue, info) => { - const systems = await contextValue.repository.getSystems(); - return systems.map(({ - name, - id - }) => ({ - name, - id - })); - }, - system: async (parent, args, contextValue, info) => { - if (!args.id) return null; - const system = await contextValue.repository.getSystemById(args.id); - if (system === null) return null; - - return { - name: system.name, - id: system.id, - }; - } - }, +export const MergedResolvers: Resolvers = { + ...QueryResolvers, System: { routes: async (parent, args, contextValue, info) => { return await contextValue.repository.getRoutesBySystemId(parent.id); diff --git a/src/resolvers/QueryResolvers.ts b/src/resolvers/QueryResolvers.ts new file mode 100644 index 0000000..8bb439d --- /dev/null +++ b/src/resolvers/QueryResolvers.ts @@ -0,0 +1,20 @@ +import { ServerContext } from "../ServerContext"; +import { Resolvers } from "../generated/graphql"; + +export const QueryResolvers: Resolvers = { + Query: { + systems: async (parent, args, contextValue, info) => { + return await contextValue.repository.getSystems(); + }, + system: async (parent, args, contextValue, info) => { + if (!args.id) return null; + const system = await contextValue.repository.getSystemById(args.id); + if (system === null) return null; + + return { + name: system.name, + id: system.id, + }; + } + }, +} \ No newline at end of file