32 lines
744 B
TypeScript
32 lines
744 B
TypeScript
import fp from "fastify-plugin"
|
|
import {drizzle, NodePgDatabase} from "drizzle-orm/node-postgres"
|
|
import * as schema from "../../db/schema"
|
|
import {secrets} from "../utils/secrets";
|
|
import { Pool } from "pg"
|
|
|
|
export default fp(async (server, opts) => {
|
|
|
|
const pool = new Pool({
|
|
connectionString: secrets.DATABASE_URL,
|
|
max: 10, // je nach Last
|
|
})
|
|
|
|
const db = drizzle(pool , {schema})
|
|
|
|
// Dekorieren -> überall server.db
|
|
server.decorate("db", db)
|
|
|
|
// Graceful Shutdown
|
|
server.addHook("onClose", async () => {
|
|
await pool.end()
|
|
})
|
|
|
|
console.log("Drizzle database connected")
|
|
})
|
|
|
|
declare module "fastify" {
|
|
interface FastifyInstance {
|
|
db:NodePgDatabase<typeof schema>
|
|
}
|
|
}
|