aboutsummaryrefslogtreecommitdiff
path: root/api/src/plugins/db.plugin.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/plugins/db.plugin.ts')
-rw-r--r--api/src/plugins/db.plugin.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/api/src/plugins/db.plugin.ts b/api/src/plugins/db.plugin.ts
new file mode 100644
index 0000000..47c82dd
--- /dev/null
+++ b/api/src/plugins/db.plugin.ts
@@ -0,0 +1,31 @@
+/**
+ * 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<void> {
+ fastify.decorate('db', db);
+}
+
+export default fp(dbPlugin, {
+ name: 'db-plugin',
+ fastify: '4.x',
+});