【Prisma】既存のDBからData Modelを作成する

こんにちは!たぬきうどんです!

私は2018年に非IT業界から未経験でエンジニアに転職し、現在までエンジニアとして働いています。

この記事は既存のDBからPrismaのData Modelを作成する方法を書いています。

Prismaを使いたいけど、既存のDBからData Modelを作成したいときどうすればいいんだろう?

という方はぜひご覧ください!

実行方法

環境はこちらの記事で構築した環境を使用し、prisma initを行ったPrisma初期化直後の状態です。

Docker + VS Code Remote-Containersを使ったPrismaハンズオン

DBには上記記事に引き続き、PostgreSQLを使用します。

それでは始めていきましょう!

【初期設定】DBに必要なテーブルを作成しておく

今回はteamテーブルとその子テーブルであるpersonテーブルを作成します。

テーブル作成に使用したしたSQLは以下です。

SQL
CREATE TABLE team (
    id SERIAL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE person (
    id SERIAL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    age INTEGER NOT NULL,
    address VARCHAR(100),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    team_id INTEGER REFERENCES team(id)
);

作成されたテーブルは以下です。

DBからData Modelを作成する

それではDBからData Modelを作成していきましょう。

以下のコマンドを実行してください。

npx prisma db pull

上記のコマンドを実行することで、DBに接続し、DBのスキーマをPrismaスキーマファイル(schema.prisma)に反映させます。

その際にData Modelが作成されます。

それではschema.prismaを見てみましょう。

schema.prisma
// 以下追加されたもの
model person {
  id         Int       @id @default(autoincrement())
  name       String    @db.VarChar(30)
  age        Int
  address    String?   @db.VarChar(100)
  created_at DateTime? @default(now()) @db.Timestamptz(6)
  team_id    Int?
  team       team?     @relation(fields: [team_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

model team {
  id         Int       @id @default(autoincrement())
  name       String    @db.VarChar(30)
  created_at DateTime? @default(now()) @db.Timestamptz(6)
  person     person[]
}

このようにData Modelが作成されます。

非常に簡単に作成することができますね!

ただ、prisma db pullは現在のschema.prisma上書きしてしまいますので、その点は注意しましょう。

prisma db pull --printのように--printオプションを付けると、ファイルに書き込まれず、標準出力されます

まずは--pullをつけて実行し、標準出力されたもので差分を確認するのがいいでしょう。

Prisma Clientを更新する

Prismaスキーマを更新したので、Prisma Clientも更新しておきます。

以下のコマンドを実行します。

npx prisma generate

prisma generateを実行することで、node_modules/.prisma/clientが更新されます。

VS Codeを使用している場合はエディタの再読み込みを行っておくことで、

このようにインテリセンスが効くようになります。

おわりに

以上が既存のDBからPrismaのData Modelを作成する方法でした。

このようにPrismaでは非常に簡単に既存のDBからData Modelを作成することができます。

「Prismaを更に知りたい!」というかたは公式のドキュメントを見てみてください。

この記事が皆さんの助けになれば幸いです!

最後まで読んでいただき、ありがとうございました!

参考文献

コメントを残す

メールアドレスが公開されることはありません。