import type { FastifyPluginAsync } from 'fastify' import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3' import fp from 'fastify-plugin' import { PrismaClient } from '../prisma/generated-client/client.ts' declare module 'fastify' { interface FastifyInstance { prisma: PrismaClient } } const plugin: FastifyPluginAsync = fp(async (fastify) => { const prisma = new PrismaClient({ log: ['query', 'error', 'warn'], adapter: new PrismaBetterSqlite3({ url: process.env.DATABASE_URL!, }), }) await prisma.$connect() fastify.log.info('Testing DB Connection. OK') fastify.decorate('prisma', prisma) fastify.addHook('onClose', async (fastify) => { await fastify.prisma.$disconnect() }) }, { name: 'prisma', dependencies: ['event-bus'], }) export default plugin