split query resolvers into separate files

This commit is contained in:
2025-01-23 03:33:43 -08:00
parent 36d1a24484
commit d506f9bbfe
3 changed files with 25 additions and 25 deletions

View File

@@ -1,7 +1,7 @@
import { readFileSync } from "fs"; import { readFileSync } from "fs";
import { ApolloServer } from "@apollo/server"; import { ApolloServer } from "@apollo/server";
import { startStandaloneServer } from "@apollo/server/standalone"; import { startStandaloneServer } from "@apollo/server/standalone";
import { resolvers } from "./resolvers"; import { MergedResolvers } from "./resolvers";
import { ServerContext } from "./ServerContext"; import { ServerContext } from "./ServerContext";
import { UnoptimizedInMemoryRepository } from "./repositories/UnoptimizedInMemoryRepository"; import { UnoptimizedInMemoryRepository } from "./repositories/UnoptimizedInMemoryRepository";
import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepositoryLoader"; import { TimedApiBasedRepositoryLoader } from "./loaders/TimedApiBasedRepositoryLoader";
@@ -11,7 +11,7 @@ const typeDefs = readFileSync("./schema.graphqls", "utf8");
async function main() { async function main() {
const server = new ApolloServer<ServerContext>({ const server = new ApolloServer<ServerContext>({
typeDefs, typeDefs,
resolvers, resolvers: MergedResolvers,
introspection: process.env.NODE_ENV !== "production", introspection: process.env.NODE_ENV !== "production",
}); });

View File

@@ -1,29 +1,9 @@
import { Coordinates, Eta, OrderedStop, Resolvers } from "./generated/graphql"; import { Coordinates, Eta, OrderedStop, Resolvers } from "./generated/graphql";
import { ServerContext } from "./ServerContext"; import { ServerContext } from "./ServerContext";
import { QueryResolvers } from "./resolvers/QueryResolvers";
export const resolvers: Resolvers<ServerContext> = { export const MergedResolvers: Resolvers<ServerContext> = {
Query: { ...QueryResolvers,
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,
};
}
},
System: { System: {
routes: async (parent, args, contextValue, info) => { routes: async (parent, args, contextValue, info) => {
return await contextValue.repository.getRoutesBySystemId(parent.id); return await contextValue.repository.getRoutesBySystemId(parent.id);

View File

@@ -0,0 +1,20 @@
import { ServerContext } from "../ServerContext";
import { Resolvers } from "../generated/graphql";
export const QueryResolvers: Resolvers<ServerContext> = {
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,
};
}
},
}