/** * db.plugin.ts * * Plugin Fastify que disponibiliza o banco de dados como decorador. * * Após registrar este plugin, qualquer rota pode acessar o banco via: * fastify.db ou request.server.db * * O uso de fastify-plugin (fp) é essencial: sem ele, o Fastify encapsularia * o decorador apenas no escopo do plugin, tornando-o invisível para outros plugins. */ import fp from 'fastify-plugin'; import type { FastifyInstance } from 'fastify'; import { db, type Database } from '@/db/connection.js'; // Augmenta a tipagem do Fastify para incluir `db` com type-safety completo declare module 'fastify' { interface FastifyInstance { db: Database; } } async function dbPlugin(fastify: FastifyInstance): Promise { fastify.decorate('db', db); } export default fp(dbPlugin, { name: 'db-plugin', fastify: '4.x', });