Files
Kokorone/.agents/skills/prisma-cli/references/db-pull.md
T
Jeffery f44200f543 feat: 完成 B 群組 — 資料層與核心領域模型
- 導入 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 群組冒煙測試無回歸。
2026-08-13 09:43:15 +08:00

3.5 KiB

prisma db pull

Introspects an existing database and updates your Prisma schema to reflect its structure.

Command

prisma db pull [options]

What It Does

  • Connects to your database
  • Reads the database schema (tables, columns, relations, indexes)
  • Updates schema.prisma with corresponding Prisma models
  • For MongoDB, samples data to infer schema

Options

Option Description
--force Ignore current Prisma schema file
--print Print the introspected Prisma schema to stdout
--schema Custom path to your Prisma schema
--config Custom path to your Prisma config file
--url Override the datasource URL from the Prisma config file
--composite-type-depth Specify the depth for introspecting composite types (default: -1 for infinite, 0 = off)
--schemas Specify the database schemas to introspect
--local-d1 Generate a Prisma schema from a local Cloudflare D1 database

Examples

Basic introspection

prisma db pull

Preview without writing

prisma db pull --print

Outputs schema to terminal for review.

Force overwrite

prisma db pull --force

Replaces schema file, losing any manual customizations.

Prerequisites

Configure database connection in prisma.config.ts:

import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
  schema: 'prisma/schema.prisma',
  datasource: {
    url: env('DATABASE_URL'),
  },
})

Workflow

Starting from existing database

  1. Initialize Prisma:

    prisma init
    
  2. Configure database URL

  3. Pull schema:

    prisma db pull
    
  4. Review and customize generated schema

  5. Generate client:

    prisma generate
    

Syncing changes from database

When database changes are made outside Prisma:

prisma db pull
prisma generate

Generated Schema Example

Database tables become Prisma models:

-- Database tables
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE NOT NULL,
  name VARCHAR(100)
);

CREATE TABLE posts (
  id SERIAL PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  author_id INTEGER REFERENCES users(id)
);

Becomes:

model users {
  id    Int     @id @default(autoincrement())
  email String  @unique @db.VarChar(255)
  name  String? @db.VarChar(100)
  posts posts[]
}

model posts {
  id        Int    @id @default(autoincrement())
  title     String @db.VarChar(255)
  author_id Int?
  users     users? @relation(fields: [author_id], references: [id])
}

Post-Introspection Cleanup

After db pull, consider:

  1. Rename models to PascalCase:

    model User {  // Was: users
      @@map("users")
    }
    
  2. Rename fields to camelCase:

    authorId Int? @map("author_id")
    
  3. Add relation names for clarity:

    author User? @relation("PostAuthor", fields: [authorId], references: [id])
    
  4. Add documentation:

    /// User account information
    model User {
      /// Primary email for authentication
      email String @unique
    }
    

MongoDB Introspection

For MongoDB, db pull samples documents to infer schema:

prisma db pull

May require manual refinement since MongoDB is schemaless.

Warning

db pull overwrites your schema file. Always:

  • Commit current schema before pulling
  • Use --print to preview first
  • Backup customizations you want to keep