`client`: Prisma Clientにメソッドを追加する
情報
Prisma Client拡張機能は、バージョン4.16.0以降で一般提供されています。これらはバージョン4.7.0でプレビュー版として導入されました。4.16.0より前のバージョンを使用している場合は、`clientExtensions` プレビュー機能フラグを有効にしてください。
`client` Prisma Client拡張機能コンポーネントを使用して、Prisma Clientにトップレベルのメソッドを追加できます。
Prisma Clientを拡張する
`$extends` クライアントレベルのメソッドを使用して、拡張されたクライアントを作成します。拡張されたクライアントは、1つ以上の拡張機能でラップされた標準Prisma Clientのバリアントです。`client` 拡張コンポーネントを使用して、Prisma Clientにトップレベルのメソッドを追加します。
Prisma Clientにトップレベルのメソッドを追加するには、以下の構造を使用します
const prisma = new PrismaClient().$extends({
client?: { ... }
})
例
次の例では、`client` コンポーネントを使用して、2つのメソッドをPrisma Clientに追加しています
- `$log` はメッセージを出力します。
- `$totalQueries` は、現在のクライアントインスタンスによって実行されたクエリの数を返します。この情報は、メトリクス機能を使用して収集されます。
情報
プロジェクトでメトリクスを使用するには、`schema.prisma` ファイルの `generator` ブロックで `metrics` 機能フラグを有効にする必要があります。 詳細はこちら。
const prisma = new PrismaClient().$extends({
client: {
$log: (s: string) => console.log(s),
async $totalQueries() {
const index_prisma_client_queries_total = 0
// Prisma.getExtensionContext(this) in the following block
// returns the current client instance
const metricsCounters = await (
await Prisma.getExtensionContext(this).$metrics.json()
).counters
return metricsCounters[index_prisma_client_queries_total].value
},
},
})
async function main() {
prisma.$log('Hello world')
const totalQueries = await prisma.$totalQueries()
console.log(totalQueries)
}