Prisma & PostgreSQL / Next.js

Next.js (AppRouter,TypeScript)  の環境で、OR マッパーPrismaを試してみました。

環境) Next.js v14.1.4, PostgreSQL v16, Prisma v5.11 / Mac (arm)

参考)
https://qiita.com/tomohiko_ohhashi/items/da804ed1f5870c9ce52d
https://www.sddgrp.co.jp/blog/technology/use-next-jsprisma/

コードは上記のものを使用させていただきました。(シンプルなToDoリストWEBアプリです。)
AppRouterで、 PostgreSQLを使用したかったこと、また実行されているのが、サーバサイドなのかクライアント(ブラウザ)なのか確認するため、これらの部分を変更しています。

npx create-next-app prisma-samp
cd prisma-samp
npm i prisma
npm i antd
npm i @prisma/client
npx prisma init
(schema.prisma編集)
npx prisma db push

DBマネージメントツール

npx prisma studio

.env

DATABASE_URL=”postgresql://postgres:postgres@localhost:5432/prisma?schema=public”

prisma/schema.prisma

generator client {
provider = “prisma-client-js”
}

datasource db {
provider = “postgresql”
url = env(“DATABASE_URL”)
}

model notes {
id Int @id @default(autoincrement())
content String
createdAt DateTime @default(now())
}

page.tsx

import Appの部分をコメントアウトしているのは、下記console.logでサーバサイドのコンソールに表示していたため。
use clientにしているにもかかわらず、サーバが実行したため、dynamic を使用した。

実行画面

デバッグ表示でdataを画面とコンソールで確認。

schemaファイルの記述とprismaコマンドの操作だけでPostgresの管理ができるのはとても便利です。
DBがすでに作成されている場合は、’prisma db pull’コマンドでschemeファイルを作成できます。

下記、その他コードの引用です。

app.tsx

api/notes/route.ts