Prisma ORMのバージョン4.16.0のリリースにより、Client extensionsが一般提供されるようになりました! この新機能により、ユーザーはPrisma Clientを個々のユースケースに合わせて拡張およびカスタマイズできます。
コードベースのニーズに合わせてPrisma Clientを調整する
4.7.0で、Prisma Client extensionsをプレビュー機能としてリリースしました。本日、Prisma Client extensionsの一般提供を発表できることを嬉しく思います! Extensionsはプレビュー期間中に非常に有用かつ強力であることが証明されており、AccelerateやOptimizeといったPrisma製品にも採用されています!
シンプルで使いやすいAPI
Client extensionsについて初めて聞く方もご心配なく。既存のブログ記事で、その使用法について詳しく説明しています。ここで要約すると、extensionの作成は$extends
を使用するのと同じくらい簡単です。
このコードスニペットは、model
extensionを使用してUser
モデルに新しいメソッドを追加する方法を示しています。
代わりにすべてのモデルにメソッドが必要な場合は、組み込みの$allModels
機能を使用することもできます。
このリリースの一環として行われたextensions APIの変更に関するより詳細な情報については、リリースノートをご確認ください。
コミュニティによって構築されたExtensions
クライアント拡張機能が一般公開されるようになりましたが、すでにいくつかの素晴らしい実例が公開されています。prisma-extension-pagination
は、コミュニティからの素晴らしい貢献です。外部のクライアント拡張機能をインポートして使用するのも簡単です。
様々なユースケースのためのリファレンス例
コミュニティからの貢献に加えて、prisma-client-extensions
のサンプルリポジトリには、Prisma Client extensionsが有用であると私たちが考える様々な領域を示すリファレンス例のセットがあります。このリポジトリには現在、以下のサンプルextensionsが含まれています。
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ニュースレターに登録