Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@sabinthedev/fastify-prisma

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sabinthedev/fastify-prisma

A plugin for Fastify to easily register Prisma Client in your Fastify instance

  • 1.0.23
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
30
increased by233.33%
Maintainers
1
Weekly downloads
 
Created
Source

Prisma + Fastify

Header

npm version Tests/Linting JavaScript Style Guide semantic-release

NPM

Installation

To use this package, first install it:

npm i @sabinthedev/fastify-prisma

Usage

In order to use this package, you will need Prisma set up in your project and Prisma Client generated. This plugin currently relies on Prisma Client being in node_modules/@prisma/client, (the default output location of the generated client).

import prismaPlugin from '@sabinthedev/fastify-prisma'
import Fastify from 'fastify'

const fastify = Fastify()

fastify.register(prismaPlugin)

fastify.get('/', async () => {
  // You will get nice intellisense here 👇🏻
  const users = await fastify.prisma.user.findMany()
  return { users }
})

fastify.listen({ port: 3000 }, (err, address) => {
  console.info(`⚡️ Server running at ${address}`)
})

You can also provide an object that contains Prisma Client's constructor arguments. For example, if you would like to manually set the datasource:


fastify.register(prismaPlugin, {
  datasources: {
    db: {
      url: 'file:./dev.db'
    }
  }
})

Caveats

There are a few caveats with this plugin which, at the moment, have no workarounds I am aware of:

Can't use a custom output directory for Prisma Client

In Prisma, you have the ability via the Prisma schema to change the output directory of the generated client, which defaults to node_modules/@prisma/client.

This plugin, however, relies on that client being in the default location.

Only a single Prisma Client can be used

You can set up different schemas in Prisma and generate Prisma Client for each schema. This requires using custom outputs, which is not supported in this plugin for the reason detailed above.

Prisma Client options may result in unexpected problems with typings & intellisense

Because the plugin has to look in the node_modules directory for Prisma Client and registers the prisma decorator with the type PrismaClient, certain actions that adjust the type of PrismaClient will not register correctly in the Fastify instance.

For example, while configuring logging in PrismaClient:

const prisma = new PrismaClient({
  log: [{ emit: 'event', level: 'info' }]
})

This will actually adjust the PrismaClient type and give you the ability to hook into events:

prisma.$on('info', (e) => {
  console.log(e)
})

Passing those logging configurations with this plugin will not adjust the type of the prisma decorator on the Fastify instance, resulting in a type error if you attempt to use the code above.

Just to clarify, this will affect any operation that adjusts the Prisma Client type.

Author

I'm Sabin Adams!

sabinthedev

Contributors

None yet! But contributions are welcome!

License

Licensed under MIT.

Keywords

FAQs

Package last updated on 01 Sep 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc