62 lines
1.6 KiB
TypeScript

import fs from 'node:fs'
import path from 'node:path'
import { defineConfig } from 'prisma/config'
function loadEnvValuesFromDotEnv(names: string[]): void {
const missingNames = names.filter((name) => {
const value = process.env[name]
return !(typeof value === 'string' && value.length > 0)
})
if (missingNames.length === 0) {
return
}
const envPath = path.resolve(process.cwd(), '.env')
if (!fs.existsSync(envPath)) {
return
}
const content = fs.readFileSync(envPath, 'utf8')
for (const line of content.split(/\r?\n/)) {
const trimmed = line.trim()
if (!trimmed || trimmed.startsWith('#')) continue
const separatorIndex = trimmed.indexOf('=')
if (separatorIndex <= 0) continue
const key = trimmed.slice(0, separatorIndex).trim()
if (!missingNames.includes(key)) continue
let value = trimmed.slice(separatorIndex + 1).trim()
if (
(value.startsWith('"') && value.endsWith('"')) ||
(value.startsWith("'") && value.endsWith("'"))
) {
value = value.slice(1, -1)
}
if (value.length > 0) {
process.env[key] = value
}
}
}
loadEnvValuesFromDotEnv(['DATABASE_URL', 'SHADOW_DATABASE_URL'])
if (!process.env.DATABASE_URL) {
throw new Error('DATABASE_URL 未配置。请在 .env 中设置 DATABASE_URL。')
}
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: process.env.DATABASE_URL,
...(process.env.SHADOW_DATABASE_URL
? { shadowDatabaseUrl: process.env.SHADOW_DATABASE_URL }
: {}),
},
})