# Database Integration — Fastify

Source: https://www.geekswithgeeks.com/en/fastify/ff-database-integration

> Connect and query databases from Fastify routes.

## Database as a plugin

Initialize the database connection in a plugin and decorate the Fastify instance for use in routes.

## Database plugin example

A plugin that sets up a Prisma client and makes it available in routes.

```javascript
import { PrismaClient } from '@prisma/client';

export default async function dbPlugin(fastify, opts) {
  const prisma = new PrismaClient();
  
  fastify.addHook('onClose', async () => {
    await prisma.$disconnect();
  });
  
  fastify.decorate('db', prisma);
}

// In a route:
fastify.get('/users', async () => {
  return await fastify.db.user.findMany();
});
```

## Handle connection gracefully

Use the `onClose` hook to disconnect the database when Fastify shuts down.
