Prisma ORMのバージョン4.16.0のリリースにより、Client extensionsが一般提供開始となりました!この新機能により、ユーザーは個々のユースケースに合わせてPrisma Clientを拡張およびカスタマイズできます。
Prisma Clientをコードベースのニーズに合わせて調整
バージョン4.7.0で、Prisma Client エクステンションをプレビュー機能としてリリースしました。本日、Prisma Client エクステンションの一般提供開始を発表できることを嬉しく思います!エクステンションはプレビュー期間中に非常に有用で強力であることが証明されており、AccelerateやOptimizeのようなPrisma製品を強化することさえできました!
シンプルで使いやすいAPI
Client エクステンションについて初めて耳にする場合でもご心配なく。詳細な使用方法を説明した既存のブログ記事があります。ここで要約すると、エクステンションの作成は$extends
を使用するのと同じくらい簡単です。
このコードスニペットは、モデルエクステンションを使用してUser
モデルに新しいメソッドを追加する方法を示しています。
代わりにすべてのモデルにメソッドが必要な場合は、組み込みの$allModels
機能を使用することもできます。
このリリースの一部としてエクステンションAPIに加えた変更の詳細については、リリースノートをご確認ください。
コミュニティによって構築されたエクステンション
クライアントエクステンションが一般提供されるようになった今、すでにいくつかのクールな例が見られます。prisma-extension-pagination
は、コミュニティからの素晴らしい貢献です。外部クライアントエクステンションのインポートと使用も簡単です。
さまざまなユースケースのリファレンス例
コミュニティの貢献に加えて、Prisma Clientエクステンションが役立つと考えられるさまざまな分野を紹介するリファレンス例のセットをprisma-client-extensions
のサンプルリポジトリに用意しています。リポジトリには現在、次のサンプルエクステンションが含まれています。
例 | 説明 |
---|---|
audit-log-context | 現在のユーザーIDをPostgresの監査ログトリガーへのコンテキストとして提供します。 |
callback-free-itx | コールバックなしでインタラクティブトランザクションを開始するメソッドを追加します。 |
computed-fields | 仮想/計算フィールドを結果オブジェクトに追加します。 |
input-transformation | Prisma Clientクエリに渡された入力引数を変換して、結果セットをフィルタリングします。 |
input-validation | ミューテーションメソッドに渡された入力引数に対してカスタム検証ロジックを実行します。 |
instance-methods | save() やdelete() のようなActive Recordライクなメソッドを結果オブジェクトに追加します。 |
json-field-types | JSON列に格納されたデータに対して、型付きランタイムパースを使用します。 |
model-filters | モデルの複雑なwhere条件に構成できる再利用可能なフィルターを追加します。 |
obfuscated-fields | 機密データ(パスワードフィールドなど)が結果に含まれないようにします。 |
query-logging | Prisma Clientクエリをシンプルなクエリタイミングとロギングでラップします。 |
readonly-client | 読み取り操作のみを許可するクライアントを作成します。 |
retry-transactions | 指数バックオフとジッターを備えたトランザクションにリトライメカニズムを追加します。 |
row-level-security | Postgresの行レベルセキュリティポリシーを使用して、マルチテナントアプリケーションのデータを分離します。 |
static-methods | カスタムクエリメソッドをPrisma Clientモデルに追加します。 |
transformed-fields | 結果エクステンションを使用してクエリ結果を変換し、アプリにi18nを追加する方法を示します。 |
exists-fn | すべてのモデルにexistsメソッドを追加する方法を示します。 |
あなたのエクステンションを披露しましょう!
Prisma Client エクステンションについてさらに深く知りたい場合は、以前の記事「Prisma Client がさらに柔軟に: Prisma Client エクステンション」をぜひご覧ください!
あなたのエクステンションについてもお聞かせください(そして、試してみることもできればと思っています)。
Discordで#MadeWithPrismaの成果をぜひ共有してください。
次の投稿をお見逃しなく!
Prismaニュースレターに登録する