diff --git a/backend/src/plugins/prisma.ts b/backend/src/plugins/prisma.ts new file mode 100644 index 0000000..e19e32c --- /dev/null +++ b/backend/src/plugins/prisma.ts @@ -0,0 +1,25 @@ +import fp from 'fastify-plugin'; +import { PrismaClient } from '@prisma/client'; +import type { FastifyPluginAsync } from 'fastify'; + +declare module 'fastify' { + interface FastifyInstance { + prisma: PrismaClient; + } +} + +export const prismaPlugin: FastifyPluginAsync = fp(async (fastify) => { + const prisma = new PrismaClient({ + log: fastify.log.level === 'debug' ? ['query', 'error', 'warn'] : ['error'], + }); + + await prisma.$connect(); + + fastify.decorate('prisma', prisma); + + fastify.addHook('onClose', async (server) => { + await server.prisma.$disconnect(); + }); +}); + +export default prismaPlugin;