👋

1. Prismaのセットアップ Prisma 入門ワークショップ(2021)

2021/06/25に公開

ゴール

このレッスンの目的は、Prismaをセットアップし、Prismaのデータモデリング言語を使いこなし、初めてのデータベース移行を行うことです。

レッスン

0. Prisma 入門ワークショップ(2021)
1. Prismaのセットアップ←ここ
2. Prisma Clientを使ってみる
3. Prisma Clientを使ってREST APIの作成
4. Prisma Clientを使ってGraphQL APIの作成

リソース

Prismaとは?
Node.js & TypeScript向けの完璧なORM

英語のドキュメント
https://www.notion.so/A-Practical-Introduction-to-Prisma-2021-ccf00a066ef4432caeb03da179e38302

Zoom ウェビナー
https://www.youtube.com/watch?v=80CYmde9z9c

GitHub
https://github.com/nikolasburk/prisma-workshop

セットアップ

まず、starter project from GitHubを、READMEの指示に従ってクローンします。スタータープロジェクトを自分のマシンにインストールしたら、次はこのレッスンで必要なデータベーステーブルを作成します。

タスク

レポをクローンして、npmの依存関係をインストールしたら、このレッスンのタスクに取り掛かる準備ができました💪

タスク 1: 最初のPrismaモデルを作成する

Prisma Schema (通常、schema.prismaと呼ばれます)ファイルは、Prismaツールを使用するすべてのプロジェクトの核となるものです。現在のPrismaスキーマは以下のようになっています。

// prisma/schema.prisma

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

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

これは、datasourceでSQLiteデータベースファイルへのデータベース接続を指定し、generatorを指定してPrisma Clientを使用したいことを示します。

データソースとジェネレータに加えて、PrismaスキーマにはデータベースのテーブルをPrismaで表現したPrismaモデルも含まれています。このケースでは、最初のPrismaモデルを作成します。

まず、以下のフィールドを持つ User モデルを作成します。最も適していると思われるデータ型を選択してください。

  • id`: データベース内の各ユーザを一意に識別するための、自動インクリメントの整数値
  • name`: ユーザの名前。このフィールドはデータベース内では optional でなければなりません。
  • email`: ユーザのメールアドレス。このフィールドはデータベース内でrequiredかつuniqueでなければなりません。

準備ができたら、以下の解決策と結果を比較してみてください。

答え
model User {
  id    Int     @id @default(autoincrement())
  name  String?
  email String  @unique
}

タスク 2: 最初のマイグレーションの実行

最初のモデルができたので、対応するデータベーステーブルを作成する準備ができました。ドキュメントを見て、ローカルマイグレーションを実行するのに役立つPrisma CLIコマンドを見つけてください。コマンドが見つかったら、それを実行して、マイグレーションに適切な名前(例:init)をつけてください。

答え
npx prisma migrate dev --name init

このコマンドが正しく実行された場合、prismaディレクトリ内のプロジェクトに、2つの新しいものが追加されます。

  • データベースのマイグレーションを記録する migrations ディレクトリ
  • SQLite データベースファイルである dev.db ファイル

タスク 3: Prisma Studio によるデータベースレコードの作成

おめでとうございます。次のセクションに進む前に、Prisma Studioを使って、いくつかのデータベースレコードを作成してみましょう。以下のコマンドを実行して、Prisma Studioを開きます。

npx prisma studio

開いたら、Userテーブルに3つのレコードを作成し、データベースに保存します。

Discussion