フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

prisma.jsで覚えたメモ

はじめに

Viewテーブルをprisma.jsから利用する方法

  • 下記のようなviewテーブルを作成した場合
create view productlist as 
  select id, 
              name 
   from product;
  • npx prisma introspectコマンドを実行しても定義が出力されないのでprisma/schema.prismaファイルに手動でviewテーブルの定義を追加する
model productlist {
   id       Int @unique
   name String @db.VarChar(255)

   @@map("productlist")
}

※Viewテーブルの場合、特にユニーク制約などはつくなくて良いのですが、指定しないでnpx prisma generateを実行するとエラーになるため、idフィールドに@uniqueを指定するようにしている。

error: Error validating model "productlist": Each model must have at least one unique criteria that has only required fields. Either mark a single field with `@id`, `@unique` or add a multi field criterion with `@@id([])` or `@@unique([])` to the model.
  • 下記のコマンドを実行するとviewテーブルのモデルを利用する事ができる。
 npx prisma generate

検索フォームの条件によってwhereの条件を変えたい

  • 下記のように検索フォームの条件が何もなかった場合、undefinedを指定すると検索条件とみなされずにselect * from productlistで実行される
const conversions = await prisma.productlist.findMany({
  where: {
    name: {
      contains: searchName ? searchName : undefined,
    },
 }}
)

実行されるモデルのSQLを確認する方法

  • PrismaClientにlog: ['query']を指定するとconsole.logにSQLが表示される
const prisma = new PrismaClient({log: ['query']})

www.prisma.io