Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Prisma Typed SQLのススメ

Prisma Typed SQLのススメ

2024/10/30 (水) Mita.ts #2

Prisma の Typed SQL の紹介です。

Tech Leverages

October 30, 2024
Tweet

More Decks by Tech Leverages

Other Decks in Technology

Transcript

  1. | © 2024 Levtech Co., Ltd. 2 レバテック開発部 ITSプロダクト開発グループ / 契約請求ドメインチーム

    塚原 渉 WATARU TSUKAHARA 2022年8月にレバテックに参画し、ITフリーランス向けのプロダクト開発に従事。 現在はPHPからTypeScriptへのシステムリプレースに取り組んでいます! リプレースにあたり、Prismaを導入しています! 趣味はスマブラ
  2. | © 2024 Levtech Co., Ltd. 3 • はじめに • Prismaで生SQLを使いたいケース

    • $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
  3. | © 2024 Levtech Co., Ltd. 4 • はじめに • Prismaで生SQLを使いたいケース

    • $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
  4. | © 2024 Levtech Co., Ltd. 6 • はじめに • Prismaで生SQLを使いたいケース

    • $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
  5. | © 2024 Levtech Co., Ltd. 7 2024年10月現在だと、例えば以下のようなケース Prismaで生SQLを使いたいケースがいくつかある Prismaで生SQLを使いたいケース ケース

    説明 パフォーマンスチューニング したい PrismaのAPIで発行されるSQLは、パフォーマンスが良くないケースがあるた め、生SQLを書いてパフォーマンスチューニングしたい。 Prisma APIが対応していない SQLを書きたい WHERE条件に配列を渡すSQLやUnionを使うSQLはPrisma APIが対応していない ため、生SQLを書く必要がある。 外部キー制約がないテーブルに対 してJOINしたい 外部キー制約がないテーブルをJOINしてデータを取得したい場合は、Prisma APIでは対応できないため、生SQLを書く必要がある。 ※自チームではこのケースで生SQLを利用しました。
  6. | © 2024 Levtech Co., Ltd. 9 アジェンダ • はじめに •

    Prismaで生SQLを使いたいケース • $queryRawの問題点 • Typed SQLで解決 • まとめ
  7. | © 2024 Levtech Co., Ltd. 11 ただし、$queryRawには問題点がある $queryRawの問題点 $queryRawの型引数にあらかじめ定義 した返却値の型を設定できる

    ただし、型引数に指定する型と実際の 返却値の整合性は開発者自身が担保す る必要がある schema.prisma から自動生成した Task 型を利用
  8. | © 2024 Levtech Co., Ltd. 12 • はじめに • Prismaで生SQLを使いたいケース

    • $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
  9. | © 2024 Levtech Co., Ltd. 15 1.SQLファイルからTSの関数を生成して利用するため型安全になる Typed SQLを使うと何が良い? Typed

    SQLで解決 $ prisma generate –sql コマンドを実行 クエリの返却値にSQLから自動生成された型が使われる!
  10. | © 2024 Levtech Co., Ltd. 16 2.TS関数生成時のSQLの誤りがあるとエラーを出してくれる Typed SQLを使うと何が良い? Typed

    SQLで解決 watchオプションでSQLファイルの修正を監視 SQLの構文ミスだけでなく、schema.prismaとの整合性もチェックしてくれる
  11. | © 2024 Levtech Co., Ltd. 17 • はじめに • Prismaで生SQLを使いたいケース

    • $queryRawの問題点 • Typed SQLで解決 • まとめ アジェンダ
  12. | © 2024 Levtech Co., Ltd. 18 Prismaで生SQLを扱いたくなったら、 Typed SQLを活用しよう!! 1.

    SQLファイルからTSの関数を生成して利用するため 型安全になる 2. TS関数生成時のSQLの誤りがあるとエラーを 出してくれる