PrismaでGraphQLに入門する
Prismaを使うとGraphQLが簡単にできるようなので、やってみました。 前回書いた、Prismaとdbdocsを組み合わせて使ってみたという記事の実質続きみたいな感じです。 ジェネレーターを実装する GraphQLを扱うためにはリゾルバという実装が必要なようですが、これをスキーマ定義から作成するようにします。 既に構築済みのprismaプロジェクトがある場合、typegraphql-prismaを追加するだけです。 yarn add -D typegraphql typegraphql-prisma 追加したら、schema.prismaに以下のgeneratorセクションを追加します。 generator typegraphql { provider = "typegraphql-prisma" } 追加したら以下のコマンドでリゾルバが作成されます。 npx prisma generate 作成されたリゾルバは、デフォルトではnode_modules/@generated/type-graphqlにあります。 GraphQLのサーバーを構築する 本題です。 Apolloを使用してGraphQLサーバーを構築しました。 実装はこちらを参考にしつつ行いました。 import { PrismaClient } from "@prisma/client"; import { ApolloServer, BaseContext } from "@apollo/server"; import { startStandaloneServer } from "@apollo/server/standalone"; import { resolvers } from "@generated/type-graphql"; import { buildSchema } from "type-graphql"; (async () => { const schema = await buildSchema({ resolvers, validate: false, }); const prisma = new PrismaClient(); interface Context { prisma: PrismaClient; } const server = new ApolloServer<Context>({ schema, }); const { url } = await startStandaloneServer(server, { context: async () => ({ prisma }), listen: { port: 4000 }, }); })(); 最新のApolloだと、contextの関数がasyncになっているので注意が必要です。 ...