파일
project/src/lib/db.ts
T
kjs그리고Claude Fable 5 f695b583e4 프로젝트 기본 구성: Next.js + PostgreSQL + Gitea Actions 배포
- Next.js 15 (App Router, TypeScript, Tailwind), pg 커넥션 풀
- /api/health DB 헬스체크, standalone Dockerfile
- Gitea Actions: 빌드 → 컨테이너 교체 → Traefik(jskim.vexplor.com) 라우팅
- 로컬 개발용 SSH DB 터널 스크립트 (scripts/db-tunnel.sh)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 17:01:55 +09:00

24 라인
578 B
TypeScript

import { Pool } from "pg";
// Next.js 개발 모드의 핫 리로드에서 Pool이 중복 생성되지 않도록 전역에 보관
const globalForDb = globalThis as unknown as { pgPool?: Pool };
export const db =
globalForDb.pgPool ??
new Pool({
connectionString: process.env.DATABASE_URL,
max: 10,
});
if (process.env.NODE_ENV !== "production") {
globalForDb.pgPool = db;
}
export async function query<T extends Record<string, unknown>>(
text: string,
params?: unknown[],
) {
const result = await db.query(text, params);
return result.rows as T[];
}