37 lines
969 B
TypeScript
37 lines
969 B
TypeScript
/**
|
|
* Prisma Client 单例实例
|
|
* Prisma 7 使用 engineType="client" 时必须提供 adapter
|
|
* 使用 @prisma/adapter-mariadb 连接 MySQL
|
|
*/
|
|
|
|
import { PrismaMariaDb } from '@prisma/adapter-mariadb'
|
|
import { PrismaClient } from '@/lib/generated/prisma'
|
|
|
|
const DEFAULT_DATABASE_URL =
|
|
'mysql://cdb_outerroot:Zhiqun1984@56b4c23f6853c.gz.cdb.myqcloud.com:14413/soul_miniprogram'
|
|
|
|
declare global {
|
|
// eslint-disable-next-line no-var
|
|
var prisma: PrismaClient | undefined
|
|
}
|
|
|
|
// Prisma 7 要求:使用 client 引擎时必须传入 adapter
|
|
const adapter = new PrismaMariaDb(
|
|
process.env.DATABASE_URL || DEFAULT_DATABASE_URL
|
|
)
|
|
|
|
const prismaInstance = new PrismaClient({
|
|
adapter,
|
|
log: process.env.NODE_ENV === 'development' ? ['error', 'warn'] : ['error'],
|
|
})
|
|
|
|
export const prisma = global.prisma || prismaInstance
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
global.prisma = prisma
|
|
}
|
|
|
|
process.on('beforeExit', async () => {
|
|
await prisma.$disconnect()
|
|
})
|