Skip to content

20251124sun

Published: at 15:00

20251121-1124

import { PrismaClient } from "@prisma/client";

// Next.jsの開発環境(Hot Module Replacement)でPrismaClientのインスタンスが
// 複数作成されるのを防ぐためのシングルトンパターン実装(インスタンスを一つに限定する)
// globalThisを使用してグローバルスコープにPrismaClientインスタンスを保存
// prismaをglobalThis(unknown)にしたものを宣言
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined}

// 既存のPrismaClientインスタンスがあればそれを使用し、
// なければ新しく作成する(シングルトンパターン)
export const prisma = globalForPrisma.prisma ?? new PrismaClient();

// 開発環境では、グローバル変数にPrismaClientインスタンスを保存
// これにより、モジュールが再読み込みされても同じインスタンスを再利用できる
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma