diff --git a/package.json b/package.json index 6a2ee70..8160c82 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@types/node": "20.12.8", "@types/react": "18.3.1", "@upstash/redis": "^1.28.4", + "@vercel/functions": "^1.0.1", "@vercel/kv": "^1.0.1", "@vercel/postgres": "^0.8.0", "@xata.io/client": "^0.29.4", diff --git a/pages/api/neon-prisma-global.ts b/pages/api/neon-prisma-global.ts index ba13b1e..859b20d 100644 --- a/pages/api/neon-prisma-global.ts +++ b/pages/api/neon-prisma-global.ts @@ -2,24 +2,30 @@ import { NextRequest as Request, NextResponse as Response } from "next/server"; import { Pool } from '@neondatabase/serverless' import { PrismaNeon } from '@prisma/adapter-neon' import { PrismaClient } from '@/prisma-neon/prisma-client' +import { waitUntil } from "@vercel/functions"; export const config = { runtime: "edge", }; -const pool = new Pool({ connectionString: process.env.NEON_DATABASE_URL, idleTimeoutMillis: 1 }) -const adapter = new PrismaNeon(pool) -const prisma = new PrismaClient({ adapter }) + const start = Date.now() export default async function api(req: Request) { const count = toNumber(new URL(req.url).searchParams.get("count")); const time = Date.now(); + const pool = new Pool({ connectionString: process.env.NEON_DATABASE_URL }) + const adapter = new PrismaNeon(pool) + const prisma = new PrismaClient({ adapter }) + let data = null; for (let i = 0; i < count; i++) { data = await prisma.employees.findMany({ take: 10 }); } + + waitUntil(pool.end()); + return Response.json( { data, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index affe30c..d0c525f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,6 +59,9 @@ dependencies: '@upstash/redis': specifier: ^1.28.4 version: 1.28.4 + '@vercel/functions': + specifier: ^1.0.1 + version: 1.0.1 '@vercel/kv': specifier: ^1.0.1 version: 1.0.1 @@ -970,6 +973,11 @@ packages: crypto-js: 4.2.0 dev: false + /@vercel/functions@1.0.1: + resolution: {integrity: sha512-YBOEKITWgRWQJg2/0TJaiZOAsJz/OqjBfZO87lBA5PtddNjjEUQQxSlon/ank+RC7laJ/51zMKkv9rgprmLMow==} + engines: {node: '>= 16'} + dev: false + /@vercel/kv@1.0.1: resolution: {integrity: sha512-uTKddsqVYS2GRAM/QMNNXCTuw9N742mLoGRXoNDcyECaxEXvIHG0dEY+ZnYISV4Vz534VwJO+64fd9XeSggSKw==} engines: {node: '>=14.6'}