Prismとは何か、Zodとは何か?

Prismは、スキーマファイルを使用してモデル、フィールド、リレーションシップでデータベース構造を定義するORM(オブジェクト関連マッピング)ツールです。Zodは、ランタイム型バリデータを定義できるTypeScript優先のスキーマ検証ライブラリです。PrismaスキーマをZodスキーマに変換することで、データベースモデル定義を入力検証に再利用でき、アプリケーション全体でデータベース構造と検証ロジックの一貫性を確保できます。

ツールの説明

このツールは、Prismaスキーマ定義をZod検証スキーマに自動的に変換します。Prismaモデル、列挙型、フィールド型を解析し、適切な型マッピングを使用して対応するZodスキーマを生成します。このツールはオプショナルフィールド、配列、特殊なPrisma型を処理し、データベース構造を反映したTypeScript対応の検証スキーマを作成します。

機能

  • 自動型マッピング: Prisma型(String、Int、DateTimeなど)を対応するZodバリデータに変換
  • 列挙型サポート: Prisma列挙型定義からZod列挙型スキーマを生成
  • 配列処理: Prismaリストフィールドを適切にZod配列バリデータに変換
  • オプショナルフィールド: 生成されたZodスキーマでオプショナルフィールド定義を保持
  • TypeScript型: z.inferを使用してTypeScript型定義を自動生成
  • リレーションコメント: 直接変換できないリレーションフィールドにコメントを追加
  • 複数モデル: 単一のPrismaスキーマファイル内のすべてのモデルと列挙型を処理
  • シンタックスハイライト: PrismaおよびTypeScriptシンタックスハイライト機能付きコードエディタ

ユースケース

  • API入力検証: リクエストボディをデータベースモデルに対して検証
  • フォーム検証: React Hook FormなどのフォームライブラリでZodスキーマを使用
  • 型安全性: ランタイム検証がデータベーススキーマと一致することを確保
  • コード生成: データベースモデルから検証ロジックを自動生成
  • 一貫性: 検証スキーマをデータベース構造と同期させた状態を保持
  • GraphQLリゾルバー: GraphQLミューテーションリゾルバーで入力を検証
  • マイグレーションサポート: データベースモデル変更時に検証スキーマを更新

サポートされている型マッピング

  • Stringz.string()
  • IntFloatDecimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • カスタム型/列挙型 → z.lazy(() => TypeSchema)
  • リスト → z.array()
  • オプショナルフィールド → .optional()