Client Extensions
Add methods to Prisma Client
Extend the functionality of Prisma Client, client component
You can use the client Prisma Client extensions component to add top-level methods to Prisma Client.
Extend Prisma Client
Use the $extends client-level method to create an extended client. An extended client is a variant of the standard Prisma Client that is wrapped by one or more extensions. Use the client extension component to add top-level methods to Prisma Client.
To add a top-level method to Prisma Client, use the following structure:
const prisma = new PrismaClient().$extends({
client?: { ... }
})Example
The following example uses the client component to add two methods to Prisma Client:
$logoutputs a message.$totalQueriesreturns the number of queries executed by the current client instance.
let total = 0;
const prisma = new PrismaClient().$extends({
client: {
$log: (s: string) => console.log(s),
async $totalQueries() {
return total;
},
},
query: {
$allModels: {
async $allOperations({ query, args }) {
total += 1;
return query(args);
},
},
},
});
async function main() {
prisma.$log("Hello world");
const totalQueries = await prisma.$totalQueries();
console.log(totalQueries);
}