GitFOSS
.ts
TypeScript
(application/typescript)
// 3rd-party
import fp from "fastify-plugin";
import { FastifyPluginAsync } from "fastify";
// generated via script[generate:script]
import { PrismaClient } from "@prisma/client";

export const prismaPlugin: FastifyPluginAsync<{ prisma: PrismaClient }> = fp(
  async (server, { prisma }) => {
    await prisma.$connect();
    server.decorate("prisma", {
      getter: () => prisma,
    });
    server.decorateRequest("prisma", {
      getter: () => prisma,
    });
    server.addHook("onClose", async (server) => {
      await server.prisma.$disconnect();
    });
  }
);