mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-01-31 18:03:18 -05:00
* feat(api): create account delete endpoint --------- Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
42 lines
1.0 KiB
TypeScript
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;
|