Files
freeCodeCamp/api/src/db/prisma.ts
Niraj Nandish 999d8a6c03 feat(api): create account delete endpoint (#50304)
* feat(api): create account delete endpoint

---------

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
2023-05-18 17:01:21 +03:00

42 lines
1.0 KiB
TypeScript

import fp from 'fastify-plugin';
import { FastifyPluginAsync } from 'fastify';
import { PrismaClient } from '@prisma/client';
import { FREECODECAMP_NODE_ENV, MONGOHQ_URL } from '../utils/env';
declare module 'fastify' {
interface FastifyInstance {
prisma: PrismaClient;
}
}
function createTestConnectionURL(url: string, dbId: string) {
return url.replace(/(.*\/)(.*)(\?.*)/, `$1$2${dbId}$3`);
}
const prismaPlugin: FastifyPluginAsync = fp(async (server, _options) => {
const prisma =
process.env.JEST_WORKER_ID && FREECODECAMP_NODE_ENV === 'development'
? new PrismaClient({
datasources: {
db: {
url: createTestConnectionURL(
MONGOHQ_URL,
process.env.JEST_WORKER_ID
)
}
}
})
: new PrismaClient();
await prisma.$connect();
server.decorate('prisma', prisma);
server.addHook('onClose', async server => {
await server.prisma.$disconnect();
});
});
export default prismaPlugin;