2023年6月22日

Prisma Client Extensionsが本番環境対応になりました

Prisma ORMのバージョン4.16.0のリリースにより、Client extensionsが一般提供されるようになりました! この新機能により、ユーザーはPrisma Clientを個々のユースケースに合わせて拡張およびカスタマイズできます。

Prisma Client Extensions

コードベースのニーズに合わせてPrisma Clientを調整する

4.7.0で、Prisma Client extensionsをプレビュー機能としてリリースしました。本日、Prisma Client extensionsの一般提供を発表できることを嬉しく思います! Extensionsはプレビュー期間中に非常に有用かつ強力であることが証明されており、AccelerateOptimizeといったPrisma製品にも採用されています!

シンプルで使いやすいAPI

Client extensionsについて初めて聞く方もご心配なく。既存のブログ記事で、その使用法について詳しく説明しています。ここで要約すると、extensionの作成は$extendsを使用するのと同じくらい簡単です。

このコードスニペットは、model extensionを使用してUserモデルに新しいメソッドを追加する方法を示しています。

代わりにすべてのモデルにメソッドが必要な場合は、組み込みの$allModels機能を使用することもできます。

このリリースの一環として行われたextensions APIの変更に関するより詳細な情報については、リリースノートをご確認ください。

コミュニティによって構築されたExtensions

クライアント拡張機能が一般公開されるようになりましたが、すでにいくつかの素晴らしい実例が公開されています。prisma-extension-paginationは、コミュニティからの素晴らしい貢献です。外部のクライアント拡張機能をインポートして使用するのも簡単です。

様々なユースケースのためのリファレンス例

コミュニティからの貢献に加えて、prisma-client-extensionsのサンプルリポジトリには、Prisma Client extensionsが有用であると私たちが考える様々な領域を示すリファレンス例のセットがあります。このリポジトリには現在、以下のサンプルextensionsが含まれています。

例説明audit-log-contextPostgres監査ログトリガーに現在のユーザーIDをコンテキストとして提供callback-free-itxコールバックなしでインタラクティブトランザクションを開始するメソッドを追加computed-fields結果オブジェクトに仮想/計算フィールドを追加input-transformationPrisma Clientクエリに渡される入力引数を変換して結果セットをフィルタリングinput-validationミューテーションメソッドに渡される入力引数に対してカスタム検証ロジックを実行instance-methods結果オブジェクトにsave()delete()のようなActive Record風のメソッドを追加json-field-typesJSONカラムに保存されたデータに対して厳密な型付けされたランタイム解析を使用model-filtersモデルの複雑なwhere条件に構成できる再利用可能なフィルターを追加obfuscated-fields機密データ(例:パスワードフィールド)が結果に含まれるのを防止query-loggingシンプルなクエリのタイミング計測とロギングでPrisma Clientクエリをラップreadonly-client読み取り操作のみを許可するクライアントを作成retry-transactions指数関数的バックオフとジッターを持つトランザクションに再試行メカニズムを追加row-level-securityPostgresの行レベルセキュリティポリシーを使用してマルチテナントアプリケーションのデータを分離static-methodsPrisma Clientモデルにカスタムクエリメソッドを追加transformed-fields結果拡張機能を使用してクエリ結果を変換し、アプリにi18nを追加する方法を示すexists-fnすべてのモデルにexistsメソッドを追加する方法を示す

あなたの拡張機能を披露しましょう!

Prisma Client extensionsについてさらに深く掘り下げたい場合は、以前の解説記事「Prisma Clientの柔軟性が大幅に向上:Prisma Client Extensions」をぜひご覧ください!

また、皆様の拡張機能について(そして試用させて頂けるなら)ぜひお聞かせください。

ぜひ、私たちのDiscordであなたの#MadeWithPrismaの作品を披露してください!

次の投稿をお見逃しなく!

Prismaニュースレターに登録

© . All rights reserved.