CREATE TABLE 定義を Prisma、Drizzle ORM、TypeORM、SQLAlchemy のモデル雛形に変換します。生成されたフィールドと型マッピングを確認してください。
ブラウザ内でローカルに実行CREATE TABLE 文を貼り付け、Prisma、Drizzle、TypeORM、SQLAlchemy のいずれかを選んで「モデルを生成」を押します。貼り付けた中の各テーブルを読み取り、列・型・NOT NULL・主キー・既定値・外部キーを反映したモデルブロックをテーブルごとに返します。コピーまたはダウンロードしてそのまま使えます。
処理はすべてページ内で完結します。検証では生成時にネットワーク要求が一切発生しなかったため、スキーマの内容がブラウザの外に出ることはなく、接続が切れても動作します。
テーブル名(スキーマ修飾の有無を問わず、app.accounts は accounts として出力)、バッククォート・二重引用符・角括弧で囲まれた列名、そして各列の型を読み取ります。NOT NULL の列は必須フィールドになり、NULL 可の列は任意になります。主キーは列レベルの PRIMARY KEY と、テーブルレベルの PRIMARY KEY (a, b) の両方から取得し、複合キーにも対応します。
自動採番は列名ではなく DDL から判断します。SERIAL、BIGSERIAL、AUTO_INCREMENT、GENERATED … AS IDENTITY、nextval(…) の既定値を認識し、単なる PRIMARY KEY は通常のキーとして扱います。DEFAULT CURRENT_TIMESTAMP と now() は各ターゲット固有の「now」既定値になります。外部キーは列レベルの REFERENCES とテーブルレベルの CONSTRAINT … FOREIGN KEY の両方から読み取ります。行コメント(-- と MySQL の #)およびブロックコメントは解析前に除去します。
Prisma: テーブルごとに 1 つのモデルを出力し、複数列のキーには @@id([...])、DDL で宣言された場合のみ @default(autoincrement())、現在時刻には @default(now())、UUID 列には @db.Uuid を付け、生成した名前が元の SQL 名を指すよう @map / @@map を付与します。
Drizzle ORM: Postgres 方言向けの pgTable 宣言を出力し、複合キーは primaryKey({ columns: [...] }) で表現します。TypeORM: 自動採番列にのみ @PrimaryGeneratedColumn、それ以外のキーには @PrimaryColumn を使い、デコレーターがスキーマと一致するようにします。SQLAlchemy: 2.0 形式の DeclarativeBase クラスに Mapped[...] 注釈と mapped_column() を使い、2 通りの外部キー記法はいずれも ForeignKey('テーブル.列') になります。インポート行には実際に使う名前だけを並べます。
型の対応は意図的に粗くしています。varchar・char・text・citext はターゲットの文字列型、DECIMAL と NUMERIC は Decimal 注釈の小数型、JSON・JSONB・XML は汎用の JSON 型になり、対応表にない型は string にフォールバックします。出力からマイグレーションを起こす前に、代表的なテーブルを実際のスキーマと突き合わせてください。
列以外の要素はデータベース側に残ります。CHECK、UNIQUE、インデックス、ビュー、トリガー、シーケンス、照合順序、ストレージ句は変換せず、リレーションやナビゲーション用のプロパティも生成しません。外部キーは SQLAlchemy で ForeignKey が付く以外はどのターゲットでも通常の列のままです。Drizzle の出力は貼り付けた DDL の方言にかかわらず Postgres 方言です。