33 lines
788 B
TypeScript
33 lines
788 B
TypeScript
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',
|
|
})
|
|
|
|
export default plugin
|