`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` は、現在のクライアントインスタンスによって実行されたクエリの数を返します。この情報を収集するために metrics 機能を使用します。
情報
プロジェクトで metrics を使用するには、`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)
}