- 導入 Prisma 7.9.1 + SQLite(better-sqlite3 driver adapter),prisma.config.ts 管理連線設定 - 完整資料模型:User/Work/Character/CharacterAlias/EpisodicMemory/SemanticMemory/ ProceduralRule/EmotionState/Relationship/SentimentLedgerEntry - packages/db:Prisma Client 存取層(ESM,因 Prisma 7 產出的 generated client 僅支援 ESM) - apps/api 隨之改為 ESM 以相容 packages/db - packages/shared:新增角色/記憶/情緒/關係共用型別,api 與 web 皆從此匯入 - prisma/seed.ts:建立測試使用者與元氣型測試角色,含完整關係帳本與記憶種子資料 - apps/api:新增 GET /characters - scripts/smoke/B.mjs:驗證資料表齊全、API 讀出種子角色、關係與記憶可寫入讀出 - 保留 Prisma 官方隨 CLI 附的 agent skill 文件(.agents/skills 等),供後續群組查閱 npm run restart && npm run smoke -- B 皆通過(B-V),A 群組冒煙測試無回歸。
3.3 KiB
3.3 KiB
Prisma Config
Prisma v7 introduces prisma.config.ts as the central configuration file for the Prisma CLI.
Location
Place prisma.config.ts at your project root (next to package.json).
Basic Configuration
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
Configuration Options
schema
Path to your Prisma schema file:
schema: 'prisma/schema.prisma'
datasource.url
Database connection URL:
datasource: {
url: env('DATABASE_URL'),
}
datasource.directUrl
Direct connection URL (bypassing connection pooler):
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_DATABASE_URL'),
}
datasource.shadowDatabaseUrl
Shadow database for migrations:
datasource: {
url: env('DATABASE_URL'),
shadowDatabaseUrl: env('SHADOW_DATABASE_URL'),
}
migrations.path
Directory for migration files:
migrations: {
path: 'prisma/migrations',
}
migrations.seed
Seed command for prisma db seed:
migrations: {
path: 'prisma/migrations',
seed: 'tsx prisma/seed.ts',
}
Full Example
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
// Schema location
schema: 'prisma/schema.prisma',
// Migration configuration
migrations: {
path: 'prisma/migrations',
seed: 'tsx prisma/seed.ts',
},
// Database connection
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_DATABASE_URL'),
shadowDatabaseUrl: env('SHADOW_DATABASE_URL'),
},
})
Environment Variables
The env() helper
Use env() to reference environment variables:
import { env } from 'prisma/config'
datasource: {
url: env('DATABASE_URL'),
}
This provides type safety but does NOT load .env files automatically.
Loading .env files
Install and import dotenv:
npm install dotenv
import 'dotenv/config' // Must be first import
import { defineConfig, env } from 'prisma/config'
Migrating from v6
Before (v6) - schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
After (v7) - prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
directUrl: env('DIRECT_URL'),
},
})
And update schema.prisma:
datasource db {
provider = "postgresql"
// URLs now in prisma.config.ts
}
Custom Config Path
Use --config flag with CLI commands:
prisma migrate dev --config ./config/prisma.config.ts
Monorepo Configuration
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
import path from 'path'
export default defineConfig({
schema: path.join(__dirname, 'packages/database/prisma/schema.prisma'),
migrations: {
path: path.join(__dirname, 'packages/database/prisma/migrations'),
},
datasource: {
url: env('DATABASE_URL'),
},
})