Skip to content

joggrdocs/fastify-prisma

Repository files navigation

fastify-prisma

CI npm version js-semistandard-style

Fastify Prisma plugin to share the same PrismaClient across your entire server.

const allTheDucks = await server.prisma.rubberDucky.findMany();

Getting Started

Before using this plugin you will need to have prisma set up. Once you are all set with prisma install the package and register the plugin on your server.

Install the package

npm

$ npm i @joggr/fastify-prisma

yarn

$ yarn add @joggr/fastify-prisma

Register the plugin

You have two options for registering the plugin:

  1. Use the plugin as-is or pass in your own configs
  2. Create a separate client and pass it in (great if you are using a monorepo or other more unique use cases)

javascript

const { PrismaClient } = require('@prisma/client');
const fastifyPrisma = require('@joggr/fastify-prisma');

// Default
await fastify.register(fastifyPrisma);

// With client
await fastify.register(fastifyPrisma, {
  client: new PrismaClient(),
});

// with options
await fastify.register(fastifyPrisma, {
  clientConfig: {
    log: [{ emit: 'event', level: 'query' }]
  }
});

typescript

import { PrismaClient } from '@prisma/client';
import fastifyPrisma from '@joggr/fastify-prisma';

// Default
await fastify.register(fastifyPrisma);

// With client
await fastify.register(fastifyPrisma, {
  client: new PrismaClient(),
});

// with options
await fastify.register(fastifyPrisma, {
  clientConfig: {
    log: [{ emit: 'event', level: 'query' }]
  }
});

Accessing the prisma client

async function somePlugin (server, opts) {
  const ducks = await server.prisma.rubberDucky.findMany();

  // do something with the ducks, log for now
  server.log.warn({ ducks }, "🐥🐥 There are lots of ducks! 🐥🐥");
}

License

Licensed under MIT.



Want to sign up for Joggr?

We'd love to have you join, but we are in closed beta.
You can join our waitlist below.