GraphQL → Prisma
フルスタックデータベース&Prisma ORM開発スイート

GraphQL SDL から Prisma スキーマへの変換ツール (Models & Relations)

GraphQL スキーマ定義言語(SDL)のオブジェクト型、Enum、ディレクティブを、クリーンで堅牢な Prisma ORM モデルおよびリレーション定義へ自動変換します。

100% クライアント側プライバシー
サーバー送信ゼロ
プリセット:
Prisma 生成オプション
postgresql•CUID
GraphQL スキーマ定義 (SDL)
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

enum Role {
  OWNER
  ADMIN
  MEMBER
  VIEWER
}

enum SubscriptionStatus {
  TRIALING
  ACTIVE
  PAST_DUE
  CANCELED
}

model User {
  id String @id @default(cuid())
  email String @unique
  name String?
  avatarUrl String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  memberships Membership[]
  ownedWorkspaces Workspace[]
  auditLogs AuditLog[]
}

model Workspace {
  id String @id @default(cuid())
  slug String @unique
  name String
  ownerId String
  subscription Subscription?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  owner User @relation(fields: [ownerId], references: [id])
  memberships Membership[]
  projects Project[]
}

model Membership {
  id String @id @default(cuid())
  role Role
  userId String
  workspaceId String
  createdAt DateTime @default(now())

  user User @relation(fields: [userId], references: [id])
  workspace Workspace @relation(fields: [workspaceId], references: [id])
}

model Invoice {
  id String @id @default(cuid())
  subscription Subscription
  subscriptionId String
  amountDue Float
  amountPaid Float
  paid Boolean
  pdfUrl String?
  createdAt DateTime @default(now())
}

model Project {
  id String @id @default(cuid())
  workspaceId String
  name String
  description String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  workspace Workspace @relation(fields: [workspaceId], references: [id])
}

model AuditLog {
  id String @id @default(cuid())
  userId String
  action String
  ipAddress String?
  createdAt DateTime @default(now())

  user User @relation(fields: [userId], references: [id])
}
解析された GraphQL 型8 定義SDL から検出されたオブジェクト型・列挙型・インターフェース
生成された Prisma モデル6 モデル & 10 リレーションリレーショナル外部キーがマッピングされた ORM モデル
完全クライアントサイド実行100% Client-Side外部サーバーへ送信せずブラウザ内で完結する安全な解析

高速クライアントサイド処理

ブラウザメモリ内で完結するセキュアで高速なコード生成。

完全なプライバシー保護

入力されたスキーマデータはサーバーへ一切送信されません。

実戦投入可能な出力

Prisma ORM ですぐに使用できる高品質なスキーマ定義を出力。

技術リファレンス&アーキテクチャガイド

GraphQL SDL Prisma スキーマ変換ツール — リファレンスガイド

GraphQL スキーマ定義言語(SDL)のオブジェクト型、Enum、ディレクティブを、クリーンで堅牢な Prisma ORM モデルおよびリレーション定義へ自動変換します。

主要パラメータ&設定項目

ID生成戦略Enum (cuid | uuid | autoincrement)

主キーIDフィールドに付与するPrisma生成属性(@id @default(cuid())、uuid()、または autoincrement())を指定します。

初期値: cuid()
リレーション明示モードBoolean (explicit | inferred)

モデル間の外部キー(authorId等)および @relation(fields: [...], references: [...]) 属性を自動補完します。

初期値: explicit
ディレクティブ反映Boolean (enabled | disabled)

GraphQL SDL内のカスタムディレクティブ(@map, @unique, @default)を対応するPrisma属性へ変換します。

初期値: enabled
DateTimeスカラー対応String (DateTime | Timestamp | Int)

GraphQLのカスタムDateTimeスカラー型をPrismaのネイティブDateTime型へマッピングします。

初期値: DateTime

プロの活用テクニック&推奨設定

双方向リレーションの自動解決

GraphQL SDLで1対多や多対多の関連を記述する際、Prismaの厳格な検証エラーを防ぐため逆参照フィールドと外部キースカラーを自動補完します。

非Null感嘆符(!)とオプショナル修飾子(?)

GraphQL SDLの '!'(非Null)はPrismaの必須フィールドにマッピングされ、'!' のないフィールドはPrismaのオプショナル修飾子 '?' に正確に変換されます。

Enum定義とデータベースネイティブ型

GraphQLの 'enum' 定義はPrismaの 'enum' 構造へそのまま変換され、PostgreSQLやMySQLのネイティブENUM型として安全にマイグレーションされます。

よくあるトラブルと解決策

外部キーフィールドや逆参照リレーションの欠落エラー

Prismaはモデル双方にリレーション定義を求めます。SDL側で片方向のみ(例: author: User)が定義されている場合、本コンバーターが逆参照(posts: Post[])と結合用キー(authorId)を自動生成します。

カスタムGraphQLスカラー(JSON、DateTime、UUID等)の型エラー

GraphQL SDLの先頭に 'scalar DateTime' などの宣言を追加するか、ツールのスカラーマッピング設定で適切なPrisma型を指定してください。

よくある質問 (FAQ)

多対多(Many-to-Many)リレーションはどのように変換されますか?▼

両方の型が互いを配列型(例: tags: [Tag!]!, posts: [Post!]!)で参照している場合、Prismaの暗黙的(implicit)M:Nリレーション構文に変換され、中間テーブルが自動管理されます。

Query、Mutation、Subscriptionなどのルート操作型はどう処理されますか?▼

Prisma Schemaはデータベース永続化モデル専用言語です。GraphQLのルート操作型(type Query, Mutation, Subscription)やinput型は自動除外され、永続化対象のオブジェクト型のみがモデル化されます。

@map や @@map を使ったDBテーブル名・カラム名のマッピングは可能ですか?▼

はい。GraphQL SDL上のディレクティブや命名規則に基づき、Prismaの @map("column_name") や @@map("table_name") 属性を生成して既存データベーススキーマと同期できます。

入力したGraphQLスキーマが外部サーバーに送信されることはありますか?▼

いいえ。すべてのSDL構文解析およびPrismaスキーマ生成処理はブラウザのローカルメモリ上で完結し、外部サーバーへの通信は一切行われません。

関連するおすすめ開発ツール

すべてのツール →
SQL DDL から TypeORM エンティティ生成ツール(TypeScript エンティティ)開発ツール

SQL の CREATE TABLE DDL 文を、@Column、@PrimaryGeneratedColumn、リレーションデコレータを備えたクリーンな TypeScript TypeORM エンティティクラスに変換します。

ツールを開く→
SQL CREATE TABLE DDLからZodスキーマへのコンバーター開発ツール

SQLテーブルスキーマ、データ型、制約条件、NULL許容列を厳密に型付けされたTypeScript Zodオブジェクトスキーマに変換します。

ツールを開く→
Docker Compose から Kubernetes マニフェスト変換ツール(Compose to K8s)開発ツール

docker-compose.yml のサービス、環境変数、ポート公開、ボリューム設定を Kubernetes の Deployment および Service YAML マニフェストに完全変換します。

ツールを開く→
JSONから.env環境変数への変換ツール(平坦化とエクスポート)開発ツール

ネストされたJSONペイロードをカスタマイズ可能な区切り文字とプレフィックスオプションを使用して大文字SNAKE_CASEの.env設定に平坦化します。

ツールを開く→
SQL DDL から Drizzle ORM スキーマへの変換ジェネレーター (PostgreSQL, MySQL, SQLite)開発ツール

SQLのCREATE TABLE文を、pgTable、mysqlTable、sqliteTableの定義を含む型安全なDrizzle ORMスキーマコードに即座に変換します。

ツールを開く→
JSONからValibotスキーマ生成(モジュラーTypeScriptバリデーション)開発ツール

JSONデータをv.object、v.string、v.number、配列バリデータを含む軽量でツリーシェイカブルなValibotスキーマ定義に瞬時に変換します。

ツールを開く→