📖
Next.js Supabase Prisma を使用してアプリを作る 3/6 覚書
気になったところだけ書くので実際にされる方は↑から進めてください。
スキーマの作成
モデル作成
Prisma モデルを使用して Prisma スキーマ内で定義する。
アプリケーションのエンティティを表す。
schema.prisma
model Home {
// 主キー uuid() とか autoincrement() とかでもok
id String @id @default(cuid())
// ? 必須ではない. ? がないと全部必須.
image String?
title String
description String
// 浮動小数点. double precision or DOUBLE.
price Float
guests Int
beds Int
baths Int
// 基本的にデータモデルには下記2つは入れたほうが良い.追跡できる.
createdAt DateTime @default(now())
updateAt DateTime @updatedAt
}
スカラータイプとDB列
- MySQL と PostgreSQL で使用される型が異なるに気をつける
- 小規模だと気にしなくても良さそう
- https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types
- Stringの違い
- MySQL: varchar(191)
- PostgreSQL: text
- 文字制限があるかないかの差らしい
- Floatの違い
- MySQL: DOUBLE
- PostgreSQL: double precision
- わからない程度の誤差が生じるっぽい。
Prismaクライアントを生成する
Prisma クライアントを生成する必要はなぜか
Prisma モデルを定義(今回であれば Home モデル)できたら、Prismaクライアントが生成できる。
DBクエリを送信するためのAPIを提供するために。
Prisma クライアントをインストールして生成する
- インストール
npm install @prisma/client
- コマンドから Prisma クライアントを生成
npx prisma generate
生成された Prisma クライアントはデータを操作するために必要なJSコードを提供する。
PrismaMigrate で Supabase にテーブル作成
prisma を使用するとスキーマを簡単にDBと同期できる。
npx prisma db push
- push
- 強制的に更新するイメージ
- すでに存在するモデルに新しい必須フィールドを追加した場合、既存のDBをリセットする必要がある
- プロトタイピングやスキーマ設計をするにはこっち
npx prisma migrate dev
Prisma が生成した SQL クエリがあることを確認
PrismaStudio を使用してデータを探索
DBクライアントも付属されている。
npx prisma studio
から確認。
add record で適当なデータを追加。
Discussion